如果是,如何执行两个ajax fn firstAjax() & secondAjax()
1. firstAjax()
必须在secondAjax()
之前执行
2. secondAjax()
仅在执行firstAjax()
后执行。
不起作用
$('#btn').click(function(){
firstAJAX();
secondAjax(); /* it doesn't wait for the execution of firstAjax() */
});
* 经常正常*
$('#btn').click(function(){
firstAJAX();
alert("hello");
secondAjax(); /* it often works */
});
还有其他方法可以解决并确保条件。
答案 0 :(得分:1)
您必须等待firstAjax调用完成。如果您使用jQuery进行调用,那么您可以像这样配置ajax函数:
function firstAJAX(args,callback,scope){
// return the xhr Object used for this call, maybe you need it, if not, don't use return
return $.ajax({
url : "yourURL",
success : function(){
// this get's executed AFTER a SUCCESSFUL ajax call
callback.call(scope || window);
}
});
}
有关详细信息,请参阅http://api.jquery.com/jQuery.ajax/。
所以,让我们回顾一下:
1)Ajax函数可以有/某些回调/ s(已在jQuery中实现)
2)您可以将第二个请求作为回调挂钩到第一个请求。
示例:
firstAJAX(myArguments,secondAjax);
这将执行firstAJAX函数,它应该看起来像我之前编写的代码,而secondAjax函数应该执行第二个请求。像这样他们被束缚了。
答案 1 :(得分:0)
我更喜欢这种方式:
function firstAJAX(){
// done with first
secondAjax();
}
如果你在firstAjax(不是在firstAjax函数行的末尾)成功(回调你的firstAjax函数)后放置了你的secondAjax函数,我的工作正常
答案 2 :(得分:0)
此关键字是callback
功能。在你的firstAJAX()
函数中,当某个ajax-request完成时,你将在某处传递一个回调函数,该函数将被执行。
要么是谷歌ajax
和callback
,要么在代码firstAjax
和secondAjax
内发布代码,以便我们为您提供更好的帮助。