选择2次调用ajax

时间:2017-01-26 10:40:01

标签: jquery ajax jquery-select2 jquery-select2-4

我在此代码中遇到Select2组件的问题:

$("#group_select_name").select2({
  placeholder: "Select a Group",
  allowClear: true,
  ajax: {
    type: "GET",
    url: "../contactGroup",
    contentType: "application/json; charset=utf-8",
    dataType: 'json',
    processResults: function(data) {
      return {
        results: $.map(data, function(obj) {
          console.log("update 2")
          return {
            id: (obj.id),
            text: (obj.name)
          };
        })
      };
    },
  }
});

一切正常,但当我尝试使用搜索字段搜索某些内容时,该组件会向服务器发出多个不需要的AJAX请求。在浏览器的控制台中,我看到成千上万的“更新2”。

Select的版本是4.0.3。有什么建议吗?

1 个答案:

答案 0 :(得分:3)

这是因为组件请求按下每个键。您可以定义启动请求的延迟,如官方文档中所述:

  

默认情况下,只要用户,Select2就会触发新的AJAX请求   改变他们的搜索词。您可以设置去抖动的时间限制   使用ajax.delay选项的请求。

https://select2.github.io/options.html#a-request-is-being-triggered-on-every-key-stroke-can-i-delay-th

$('select').select2({
  ajax: {
    url: '/example/api',
    delay: 250
  }
});

<强> [编辑]

您的console.log位于map函数内,每次请求后都会对结果中的每个元素执行该操作。