【发布时间】:2012-06-13 02:55:44
【问题描述】:
我正在使用 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,它们都会正确执行。 如果我更改调用的顺序,总是第一个正确执行。
谁能帮我解决这个问题?或者如果您需要更多信息,请告诉我。
谢谢!
【问题讨论】:
-
parse error, data is null> 传递给$.ajax时,SoapRequest2和SoapRequest3不是 null 吗?
标签: javascript jquery ajax web-services post