Select2在通话

时间:2015-05-21 12:14:13

标签: jquery-select2 jquery-select2-3

我使用带有Ajax的Select2插件(v 3.5.2)来动态加载列表中的元素。

我在Select2的初始化(在ajax帮助器中设置url属性)和ajax调用的时间之间存在问题,可能需要更改此URL。

所以我有这样的事情:

$box.select2({
    containerCssClass: "form-control"
    minimumInputLength: 0,
    allowClear: true,
    ajax: {
       url: someUrl,
       dataType: 'json',
       quietMillis: 100,
...
}

我无法确定在ajax.url值发布前如何,何时,何地更改。{/ p>

Select2的帮助说:

  

Select2使用jQuery' $.ajax函数默认执行远程调用。可以在transport设置中指定备用ajax函数,也可以通过提供自定义query函数而不是使用ajax帮助程序来构建完全自定义的实现。

但我找不到任何关于如何做的例子。

提前感谢您的帮助。非常感谢。

2 个答案:

答案 0 :(得分:19)

  

我无法弄清楚在启动之前如何,何时,何地更改ajax.url值。

可以将ajax.url选项指定为静态字符串或在Select2 3.5.x和4.0.0中返回一个的方法。

$("select").select2({
  ajax: {
    url: function () {
      return UrlHelper.RemoteAPI();
    }
  }
});

这对于更改基本URL 非常有用,例如,在运行时确定URL或使用其他方法自动生成URL时。如果您需要更改查询参数,例如用于发送搜索字词的查询参数,则需要覆盖ajax.data选项。

$("select").select2({
  ajax: {
    data: function (args) {
      // args is the search term in 3.5.x

      // args is an object containing the query parameters in 4.0.0
      // args.term is the search term in 4.0.0
      return {
        search: args.term || args;
      };
    }
  }
});

默认情况下,此处的数据将作为查询参数附加,如果方法类型从GET(默认值)更改为其他任何内容,将作为请求正文发送。

  
    

Select2使用jQuery&#39a $ .ajax函数默认执行远程调用。可以在ajax设置中指定备用传输函数,或者可以通过提供自定义查询函数而不是使用ajax帮助程序来构建完全自定义的实现。

  
     

但我找不到任何关于如何做的例子。

Select2允许通过更改ajax.transport选项来使用不同的AJAX传输。

在3.5.2中,这必须是$.ajax兼容的方法,因此它必须能够获取包含successfailure回调的对象。

$("select").select2({
  ajax: {
    transport: function (args) {
      // args.success is a callback
      // args.failure is a callback

      // should return an object which has an `abort` method.
      return $.ajax(args);
    }
  }
});

在4.0.0中,这必须是一个方法,它将params个对象(同一个对象传递给ajax.data),success回调和failure回调。

$("select").select2({
  ajax: {
    transport: function (params, success, failure) {
      var $request = $.ajax(params);

      $request.then(success);
      $request.fail(failure);

      return $request;
    }
  }
});

答案 1 :(得分:2)

非常简单的Javascript代码处理相同,也可以在Suitescript(Netsuite)中使用。

// prepare your dynamic URL inside this method and return
function getURL() {
     return url + params;
}

// While binding the select2 with the dropdown set url to call a anonymous function which internally calls another function.
jQuery("select.itemDropDown").select2({
    placeholder: "Select an item",
    width: "200px",
    minimumInputLength: 3,
    ajax: {
        url: function() {
            return getURL()
        },
        dataType: 'json'
    }
});