【发布时间】:2011-08-25 14:09:02
【问题描述】:
我在一个循环内调用一个函数,该函数进行 ajax 调用。在拨打另一个电话之前,我需要等待 1 个 ajax 调用结束。代码就像-
function chkAll(field, markr) {
var string = "document.forms[0].pCheckBox" + markr + ".checked";
var temp = eval(string);
if (temp) {
if (field.length > 1) {
for (i = 0; i < field.length; i++) {
field[i].checked = true;
decide(field[i].id, field[i].value);
}
}
else {
field.checked = true;
decide(field.id, field.value);
}
}
}
进行 ajax 调用的函数如下:
function decide(code, dataString) {
if (document.getElementById(code).checked) {
var url = "../PRODUCT/PCProcess_Ajax.jsp?CIMS_CSRFTOKEN=" + getTokenFromSessionId();
if (window.ActiveXObject) {
httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
} else if (window.XMLHttpRequest) {
httpRequest = new XMLHttpRequest();
}
httpRequest.open("POST", url, true);
httpRequest.onreadystatechange = processRequest;
httpRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
varparameters = "pScreenId=ClmReports&pEventCode=NFACREATE&pDataString=" +
dataString + "&pSelectName=" + code;
httpRequest.send(parameters);
} else {
var url = "../PRODUCT/PCProcess_Ajax.jsp?CIMS_CSRFTOKEN=" + getTokenFromSessionId();
if (window.ActiveXObject) {
httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
httpRequest = new XMLHttpRequest();
}
httpRequest.open("POST", url, true);
httpRequest.onreadystatechange = processRequest;
httpRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
var parameters = "pScreenId=ClmReports&pEventCode=NFADELETE&pDataString=" + dataString;
httpRequest.send(parameters);
}
}
在processRequest()中我只是存储httpRequest.responseText并使用它。我想确保在前一个1完成后调用一个decide()。
对此有何看法??
【问题讨论】:
-
使用jquery,让这个过程变得非常简单
-
对不起,不能使用 jquery。这是一个现有的产品代码。
标签: javascript ajax