JQuery多个AJAX调用

时间:2010-12-16 16:44:27

标签: javascript ajax jquery

请参考下面的代码, 我已经将两个ajax都设置为async:false。 我发现当调用doUpdate2ndAJAX()的函数时,程序开始执行$(“。search”)。click();即使doUpdate2ndAJAX()尚未完成执行。

简而言之: 1. doUpdate2ndAJAX()执行 2. doUpdate2ndAJAX()尚未完成,开始执行$(“。search”)。click() 3. doUpdate2ndAJAX()完成执行和响应

我可以知道如何做到这一点 1. doUpdate2ndAJAX()执行 2. doUpdate2ndAJAX()完成执行和响应 3.拨打$(“。search”)。click();

[按顺序执行]

感谢。 -fsloke

firstCalled: function() {
             $.ajax({                          
            url: "XXX",
            async: false,
            success: function(response) {

                        doUpdate2ndAJAX();

                        $(".search").click();

                        }
           });
}               

function  doUpdate2ndAJAX(){
              $.ajax({                         
            url: "YYY",
            async: false,
            success: function(response) {
                            // UPDATE SOMETHING
                        }
               });
              return false;
}

3 个答案:

答案 0 :(得分:1)

使用Deferred对象,那些是操作异步调用的对象,你可以解决:

$.when($.ajax("/page1.php"), $.ajax("/page2.php"))
  .then(myFunc, myFailure);

这样,myFunc在进行2次ajax调用后执行,而myFailure如果其中任何一次调用都有错误。

您可以在jquery官方文档中了解更多相关信息:JQuery Deferred Object

答案 1 :(得分:0)

您应该使AJAX调用异步,并在$(".search").click();回调中为第二个请求调用success

根据您的结构,您可能需要向doUpdate2ndAJAX添加一个参数,告诉它是否要拨打$(".search").click();
或者,您可以添加回调参数。

答案 2 :(得分:0)

我建议使用“完整”回调来调用$(“。search”)。click()。

您可以在此处看到成功与完整回调之间的差异: http://api.jquery.com/jQuery.ajax/