Select2在发送新请求之前中止先前的ajax请求

时间:2016-05-19 08:45:35

标签: jquery ajax

我在我的应用程序中使用Ajax函数使用Select2插件。

这是我的代码

$(".some-field").select2({
  ajax: {
    url: "URL",
    dataType: 'json',
    delay: 250,
    data: function (params) {
      return {
        q: params.term, 
        page: params.page
      };
    },
    processResults: function (data, params) {
         //Results 
      };
    },
    cache: true
  },
});

在发送任何Ajax请求之前,我需要中止当前待处理的请求。

我应该以哪种方式进行操作?提前感谢所有帮助

2 个答案:

答案 0 :(得分:2)

我发现(感谢@PeterDarmis的建议)插件在发送新请求之前中止每个请求。正如 Select2 ajax.js 第46-53行AjaxAdapter.prototype.query方法中所定义。

if (this._request != null) {
  // JSONP requests cannot always be aborted
  if ($.isFunction(this._request.abort)) {
    this._request.abort();
  }

  this._request = null;
}

答案 1 :(得分:1)

这个想法是捕获ajax对象,并在beforeSend Function中发送新请求时取消先前的请求。

var currentRequest = null;    
$(".some-field").select2({
  currentRequest = ajax: {
    url: "URL",
    dataType: 'json',
    delay: 250,
    data: function (params) {
      return {
        q: params.term, 
        page: params.page
      };
    },
    beforeSend : function()    {           
        if(currentRequest != null) {
            currentRequest.abort();
        }
    },
    processResults: function (data, params) {
         //Results 
      };
    },
    cache: true
  },
});