jQuery - 如何在jQuery ajax中传递多个回调函数

4

在JS文件中有多个ajax调用,因此我希望能够使用一个ajax调用来调用多个回调函数。请问有人可以帮助我如何调用多个AJAX调用。以下是测试代码:

$.ajax({
  url : url,
  dataType : 'json',
  success : test1(data)
});

$.ajax({
  url : url,
  dataType : 'json',
  success : test2(data)
}); 

它的运行很好,请问你能帮我吗,我们如何在一个调用中同时调用两个ajax调用。


成功:test1(data)和success:test2(data)不能“正常工作”! - A. Wolff
6个回答

14
使用ajax返回的promise对象。
var a1 = $.ajax({ 
    url : url, 
    dataType : 'json', 
    success : test2
})
.done(cb1)
.done(cb2);
a1.done(cb3);

1
这实际上是最好的答案。 - TreeNode
1
当cb1抛出异常时会发生什么? - 9ilsdx 9rvj 0lo

6
只需在一个成功的函数中调用您两个函数即可...
 $.ajax({
   url : url,
   dataType : 'json',
   success : function(data){
      test1(data);
      test2(data);
   } 
});

3
您可以按照以下方式使用:
$.ajax({
      url : url,
      dataType : 'json',
      success : function(data){
                if(url=="xyz.php")
                     test2(data);
                else if(url=="abc.php")
                     test1(data);

      } 
});

1
你可以做到这一点 -
$.ajax({
      url : url,
      dataType : 'json',
      success : function(data){
            test2(data);
            test1(data);
      } 
});

1

像这样

$.ajax({
  url : url,
  dataType : 'json',
  success : function( data ) {
     test1(data);
     test2(data);
  }
}); 

很简单。

或者,如果你想要所有的参数,可以进一步这样做。

$.ajax({
  url : url,
  dataType : 'json',
  success : function() {
     test1.apply(null, arguments);
     test2.apply(null, arguments);
  }
}); 

你可以像这样使用它们

var test2 = function( data, status, jqXHR) {
    console.log( data, status, jqXHR );
};

0
您可以轻松地定义一个回调函数,在其中调用多个回调函数。
$.ajax({ 
    url: url,
    dataType: 'json', 
    success: myGlobalCallback(data) 
});

function myGlobalCallback(data) {
    cb1(data); 
    cb2(data);     
}

1
你不需要等待成功事件发生才调用myGlobalCallback函数,而且顺便提一下,当成功事件被触发时,你会使用返回的函数值(如果有的话),但这里并不是这种情况。事实上,由于数据未定义,这将导致错误。你需要这样做:success: myGlobalCallback - A. Wolff

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接