Javascript 多链接jQuery AJAX POST webservice调用
我使用jqueryajax调用web服务。电话必须被链接起来。基于的解决方案,我创建了一个AJAX队列Javascript 多链接jQuery AJAX POST webservice调用,javascript,jquery,ajax,web-services,post,Javascript,Jquery,Ajax,Web Services,Post,我使用jqueryajax调用web服务。电话必须被链接起来。基于的解决方案,我创建了一个AJAX队列 function ajaxQueue(step) { switch(step) { case 0: $.ajax({ type: "POST", url: "url", data: SoapRequest1,
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。第二次和第三次调用导致错误。(parseerror,数据为空)
呼叫是跨域的,通过以下方式进行抑制:
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
如果我在每个调用中添加async:false,则所有调用都会正确执行。
如果我更改调用的顺序,第一个调用总是正确执行的
有人能帮我做这个吗?或者告诉我你是否需要更多的信息
谢谢大家! 嗯,如果我链接ajax调用,我只会将第二个调用放在第一个调用成功处理程序的内部,或者是它的一些变体
$.ajax( {
url: 'blah.com',
success: function( result ) {
$.ajax( {
url: 'blah.com',
success: function( result ) {
// now in second leg of the chain.
// you can keep going like this forever.
}
} );
}
} );
使用回调(AJAX请求完成时调用的内容),将其作为参数传递到队列中:
function ajaxQueue(step, callback) {
switch(step) {
case 0: $.ajax({
type: "POST",
url: "url",
data: SoapRequest1,
contentType: "text/xml",
complete: callback
}); break;
case 1: $.ajax({
type: "POST",
url: "url",
data: SoapRequest2,
contentType: "text/xml",
complete: callback
}); break;
case 2: $.ajax({
type: "POST",
url: "url",
data: SoapRequest3,
contentType: "text/xml",
complete: callback
}); break;
}
}
//start ajaxQueue
ajaxQueue(0, function() {
// do something when ajaxQueue(0) has returned from AJAX call
});
function storeData1(xmlHttpRequest, status)
{
// passes updateData1 as a callback, automatically passes params from AJAX call
ajaxQueue(1, updateData1);
}
解析错误,数据为空
>传递到$时,数据不是SoapRequest2
和SoapRequest3
空。ajax
?感谢您的回答。我也试过了,但第2和第3篇文章仍然没有返回任何数据…在函数顶部放置一条调试语句,以检查步骤
,在每种情况下,在AJAX调用之前检查SoapRequestX的值