Jquery 如何在链中执行ajaxfn
如果Jquery 如何在链中执行ajaxfn,jquery,ajax,Jquery,Ajax,如果 1. firstAjax()必须在secondAjax()之前执行 2. secondAjax()仅在执行firstAjax()之后执行 不起作用 $('#btn').click(function(){ firstAJAX(); secondAjax(); /* it doesn't wait for the execution of firstAjax() */ }); $('#btn').click(function(){ firstA
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 */
});
*通常工作正常*
$('#btn').click(function(){
firstAJAX();
secondAjax(); /* it doesn't wait for the execution of firstAjax() */
});
$('#btn').click(function(){
firstAJAX();
alert("hello");
secondAjax(); /* it often works */
});
有没有其他方法可以解决并确定这些条件。我更喜欢这种方法:
function firstAJAX(){
// done with first
secondAjax();
}
如果您将第二个Ajax函数放在第一个Ajax成功(回调第一个Ajax函数)之后(而不是放在第一个Ajax函数行的末尾),那么我就可以正常工作了。这里的关键字是callback
函数。在firstAJAX()
函数中,您可以在某个地方传递回调函数,该回调函数将在ajax请求完成时执行。
谷歌搜索术语ajax
和callback
,或者在函数firstAjax
和secondAjax
中发布代码,这样我们可以更好地帮助您。您必须等待第一个ajax调用完成。如果您使用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);
}
});
}
有关更多信息,请参阅
那么,让我们回顾一下:
1) Ajax函数可以有一些回调函数(已经在jQuery中实现)
2) 您可以将第二个请求作为回调挂接到第一个请求
例如:
firstAJAX(myArguments,secondAjax);
这将执行第一个ajax函数,它应该与我之前编写的代码类似,第二个ajax函数应该执行第二个请求。就像这样,它们被链接起来。只有当您的注释done with first
所表示的代码是同步的,这才有效。当它调用ajax请求时,这将被异步处理,并且在ajax调用完成后不一定会调用函数secondAjax
。@Chips\u 100然后尝试在调用成功时放置secondAjax()函数firstAjax@Tushar阿希罗:不,这对我不起作用。我已经试过了。@user744587。。如果您在第一个Ajax(不是在第一个Ajax函数行的末尾)成功(回调第一个Ajax函数)之后放置第二个Ajax函数,那么我就可以了。很高兴:)。ajax方法充满了选项和回调,值得一看!谢谢你!代码很长,这就是为什么我只发布了几行。顺便说一句,我有你的逻辑,让我先试试。