Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何在链中执行ajaxfn_Jquery_Ajax - Fatal编程技术网

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方法充满了选项和回调,值得一看!谢谢你!代码很长,这就是为什么我只发布了几行。顺便说一句,我有你的逻辑,让我先试试。