我使用 jQuery AJAX 调用 web 服务。这些调用必须被链接起来。基于https://stackoverflow.com/a/995648/296575的解决方案,我创建了一个 AJAX 队列。
function ajaxQueue(step) {
switch(step) {
case 0: $.ajax({
type: "POST",
url: "url",
data: SoapRequest1,
contentType: "text/xml",
complete: storeData1
}); break;
case 1: $.ajax({
type: "POST",
url: "url",
data: SoapRequest2,
contentType: "text/xml",
complete: storeData2
}); break;
case 2: $.ajax({
type: "POST",
url: "url",
data: SoapRequest3,
contentType: "text/xml",
complete: storeData3
}); break;
}
}
//start ajaxQueue
ajaxQueue(0);
function storeData1(xmlHttpRequest, status)
{
updateData1(xmlHttpRequest.responseXML);
ajaxQueue(1);
}
function storeData2(xmlHttpRequest, status)
{
updateData2(xmlHttpRequest.responseXML);
ajaxQueue(2);
}
function storeData3(xmlHttpRequest, status)
{
updateData3(xmlHttpRequest.responseXML);
}
现在我有以下问题:如果函数被执行,只有第一种情况会从 web 服务返回正确的 XML。第二次和第三次调用导致错误。(解析错误,数据为空)。
调用是跨域的,受以下因素抑制:
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
如果我在每个调用中添加 async:false ,它们都会正确执行。如果我更改调用的顺序,总是第一个正确执行。
谁能帮我解决这个问题?或者告诉我如果您需要更多信息。
谢谢!