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

ne5o7dgx  于 2023-03-01  发布在  jQuery
关注(0)|答案(2)|浏览(124)

我在我的应用程序中使用带有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请求之前,我需要中止当前挂起的请求。
我该怎么做呢?先谢谢你的帮助

4xrmg8kj

4xrmg8kj1#

其思想是捕获 AJAX 对象,并在beforeSend函数中发送新请求时取消先前的请求。

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
  },
});
w41d8nur

w41d8nur2#

我发现(感谢@PeterDarmis的建议)插件在发送新请求之前会中止每个请求。如**Select 2 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;
}

相关问题