[英]JQuery Multiple AJAX call
请参考下面的代码,我已经将两个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;
}
使用Deferred对象,这些是操纵异步调用的对象,可以解决:
$.when($.ajax("/page1.php"), $.ajax("/page2.php"))
.then(myFunc, myFailure);
这样,myFunc会在执行2个ajax调用后执行,如果其中一个有错误,则执行myFailure。
您可以在jquery官方文档中了解有关它的更多信息: JQuery Deferred Object
您应该使AJAX调用异步,然后调用$(".search").click();
在第二个请求的success
回调中。
根据您的结构,您可能想要向doUpdate2ndAJAX
添加参数,该参数告诉它是否调用$(".search").click();
。
或者,您可以添加一个回调参数。
我建议使用“ complete”回调来调用$(“。search”)。click()。
您可以在此处查看成功和完整回调之间的区别: http : //api.jquery.com/jQuery.ajax/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.