如何在链中执行ajax fn

时间:2011-09-14 10:22:02

标签: jquery ajax

如果是,如何执行两个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 */
     });

还有其他方法可以解决并确保条件。

3 个答案:

答案 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完成时,你将在某处传递一个回调函数,该函数将被执行。 要么是谷歌ajaxcallback,要么在代码firstAjaxsecondAjax内发布代码,以便我们为您提供更好的帮助。