处理多个jQuery Ajax请求

时间:2015-06-04 14:41:30

标签: javascript jquery ajax

我正在尝试处理使用jQuery / Ajax的中止状态。

我正在进行多次ajax调用。如果任何一个Ajax调用成功(就像快照中的Status之一是200 OK那么)我需要显示成功消息。如果所有Ajax调用都具有Aborted状态,那么我需要显示失败消息。

但它不是这样的;因此有点困惑。请指导。

1 个答案:

答案 0 :(得分:0)

我认为,即使没有async:false,您也可以解决问题。使用promise同步多个请求:

$(function() {
  $("#btnSubmit").click(function() {
    var dfd = new $.Deferred();
    var proms = [];
    var errs = 0;
    for (var i = 8078; i < 8085; i++) {
      var port = i;
      proms.push(jQuery.ajax({
          url: 'http://localhost:' + port + '/test/',
          dataType: 'jsonp'
        })
        .then(function(resp) {
          dfd.resolve(resp);
          return resp;
        }, function ( err ) {
          errs++;
          if ( errs === proms.length )
            dfd.reject( err );
        }));
    }

    dfd.promise()
      .then(function ( resp ) {
        // TODO: Add your logic
      }, function () {
        console.log()
        if ( errs === proms.length )
          console.log( 'all fails' );
      });
  })
});