最近在做一个bpm的项目,有个表单需要用DWR远程调用另外一个系统的方法;但在调用过程中出现了问题,这个方法有时候调用得到,有时候又调用不到,觉得是异步请求的关系,所以在代码中将请求设置成了同步,即在调用方法的地方加上了 DWREngine.setAsync(false); 在方法结束的地方加上了DWREngine.setAsync(true); 但仍然出现调用不到得现象。
代码如下:
[code="java"]DWREngine.setMethod(DWREngine.ScriptTag);
dwr.engine._path = "http://10.0.1.99:7001/Contract/dwr/";
dwr.util._path = "http://10.0.1.99:7001/Contract/dwr/";
SubBankAJAX._path = "http://10.0.1.99:7001/Contract/dwr/";
DWREngine.setAsync(false);
var contextPath = "<%=contextPath%>";
var isSubmit = false;
var max_no = 0;
isForm = true;
//如果为核准按钮时累计金额累加,并要求财务附件上产,如为驳回则财务附件内容清除并付款状态更改
//获得表单
function getForm(){
return document.all.applyForm;
}
function getAdd(){
var i = 0;
var msg = "";
if (document.getElementById("cw_arriveDate").value.length != 10) {
i++;
msg = msg + i + ".收单日期未填写\n";
}
var cwAttachfiles = document.getElementById("max_no").value;
if (cwAttachfiles == 0) {
i++;
msg = msg + i + ".财务附件未上传";
}
else {
document.getElementById("fileAttach").outerHTML = "<input name='fileAttach' type='file' value='' size='50' style='height: 20px'/>";
}
if (msg.length > 0) {
alert(msg);
return;
}
else {
DWREngine.setAsync(false);
SubBankAJAX.addPayment(document.getElementById("formEntity.contractNO").value, document.getElementById("formEntity.payMoney").value);
DWREngine.setAsync(true);
}
var form = getForm();
form.operation.value = "release";
if (form.onsubmit == null || form.onsubmit.call(form)) {
var elements = form.getElementsByTagName("input");
if (elements) {
for (var i = 0; i < elements.length; i++) {
if (elements[i].type == "button")
elements[i].disabled = "disabled";
}
}
form.submit();
}
} [/code]
而如果在AJAX请求的地方加上alert,则一定可以调用到;DWREngine.setAsync(false);这个方法会无效呢? 各位大侠哪位知道,告诉一下谢谢