Select2 使用动态 Ajax URL on call
Select2 use a dynamic Ajax URL on call
我使用带有 Ajax 的 Select2 插件 (v 3.5.2) 来动态加载列表中的元素。
我在 Select2 的初始化(其中 url 属性 设置在 ajax 助手中)和 ajax 调用的时间之间有一个问题制作完成,此 url 可能需要更改。
所以我有这样的东西:
$box.select2({
containerCssClass: "form-control"
minimumInputLength: 0,
allowClear: true,
ajax: {
url: someUrl,
dataType: 'json',
quietMillis: 100,
...
}
我不知道如何、何时、在何处更改 ajax.url
值,然后再启动。
Select2的帮助说:
Select2 uses jQuery's $.ajax
function to execute the remote call by default. An alternative transport
function can be specified in the ajax
settings, or an entirely custom implementation can be built by providing a custom query
function instead of using the ajax helper.
但是我找不到任何关于如何做的例子。
在此先感谢您的帮助。非常感谢。
I can't figure out how, when, where to change the ajax.url value before it launches.
ajax.url
选项可以指定为静态字符串或在 Select2 3.5.x 和 4.0.0.
中返回一个的方法
$("select").select2({
ajax: {
url: function () {
return UrlHelper.RemoteAPI();
}
}
});
这对于更改 base 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 uses jQuery's $.ajax function to execute the remote call by default. An alternative transport function can be specified in the ajax settings, or an entirely custom implementation can be built by providing a custom query function instead of using the ajax helper.
但是我找不到任何关于如何做的例子。
Select2 确实允许通过更改 ajax.transport
选项使用不同的 AJAX 传输。
在 3.5.2 中,这必须是一个 $.ajax
兼容的方法,因此它必须能够接受一个包含 success
和 failure
回调的对象。
$("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;
}
}
});
非常简单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'
}
});
我使用带有 Ajax 的 Select2 插件 (v 3.5.2) 来动态加载列表中的元素。
我在 Select2 的初始化(其中 url 属性 设置在 ajax 助手中)和 ajax 调用的时间之间有一个问题制作完成,此 url 可能需要更改。
所以我有这样的东西:
$box.select2({
containerCssClass: "form-control"
minimumInputLength: 0,
allowClear: true,
ajax: {
url: someUrl,
dataType: 'json',
quietMillis: 100,
...
}
我不知道如何、何时、在何处更改 ajax.url
值,然后再启动。
Select2的帮助说:
Select2 uses jQuery's
$.ajax
function to execute the remote call by default. An alternativetransport
function can be specified in theajax
settings, or an entirely custom implementation can be built by providing a customquery
function instead of using the ajax helper.
但是我找不到任何关于如何做的例子。
在此先感谢您的帮助。非常感谢。
I can't figure out how, when, where to change the ajax.url value before it launches.
ajax.url
选项可以指定为静态字符串或在 Select2 3.5.x 和 4.0.0.
$("select").select2({
ajax: {
url: function () {
return UrlHelper.RemoteAPI();
}
}
});
这对于更改 base 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 uses jQuery's $.ajax function to execute the remote call by default. An alternative transport function can be specified in the ajax settings, or an entirely custom implementation can be built by providing a custom query function instead of using the ajax helper.
但是我找不到任何关于如何做的例子。
Select2 确实允许通过更改 ajax.transport
选项使用不同的 AJAX 传输。
在 3.5.2 中,这必须是一个 $.ajax
兼容的方法,因此它必须能够接受一个包含 success
和 failure
回调的对象。
$("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;
}
}
});
非常简单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'
}
});