Javascript 多链接jQuery AJAX POST webservice调用

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,

我使用jqueryajax调用web服务。电话必须被链接起来。基于的解决方案,我创建了一个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。第二次和第三次调用导致错误。(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的值