使用 AJAX 数据源时,我可以在 Select2 中设置查询字符串参数吗?
Can I set the query string parameters in Select2 when using AJAX data source?
我 运行 陷入 "weird"(也许不是)的情况,我需要通过 URL 传递参数,而不是将它们作为 q
发送。看一下来自 docs 的以下示例:
$(".js-data-example-ajax").select2({
ajax: {
url: "https://api.github.com/search/repositories",
dataType: 'json',
delay: 250,
data: function (params) {
return {
q: params.term, // search term
page: params.page
};
},
processResults: function (data, params) {
params.page = params.page || 1;
return {
results: data.items,
pagination: {
more: (params.page * 30) < data.total_count
}
};
},
cache: true
},
...
});
在上面的例子中 params.term
被发送到服务器,你可以使用任何机制来获取它并做你想做的事。
在我的例子中,我将搜索词发送到 API 端点。 API 期待类似以下示例的内容:
http://someurl?slug=56&title=56&description=56&content=56
换句话说:
'http://someurl?slug='+params.term+'&title='+params.term+'&description='+params.term+'&content='+params.term
如您所见,params.term
成为 API 在 URL 上发送的值。
但我不知道如何使用 Select2 实现此目的。我一直在寻找一些信息但没有成功,这就是我到目前为止所看到的:
- https://select2.github.io/options.html
- https://github.com/select2/select2/issues/3548
- https://select2.github.io/options-old.html
但是none说出我需要什么。有人知道如何实现吗?
更改数据对象以反映您希望在查询字符串中具有的属性:
data: function (params) {
return {
slug: params.term,
description: params.term,
content: params.term
};
},
在开发工具网络中仔细检查这确实是作为 GET 完成的,否则尝试将 type:'GET'
添加到 ajax 选项
我 运行 陷入 "weird"(也许不是)的情况,我需要通过 URL 传递参数,而不是将它们作为 q
发送。看一下来自 docs 的以下示例:
$(".js-data-example-ajax").select2({
ajax: {
url: "https://api.github.com/search/repositories",
dataType: 'json',
delay: 250,
data: function (params) {
return {
q: params.term, // search term
page: params.page
};
},
processResults: function (data, params) {
params.page = params.page || 1;
return {
results: data.items,
pagination: {
more: (params.page * 30) < data.total_count
}
};
},
cache: true
},
...
});
在上面的例子中 params.term
被发送到服务器,你可以使用任何机制来获取它并做你想做的事。
在我的例子中,我将搜索词发送到 API 端点。 API 期待类似以下示例的内容:
http://someurl?slug=56&title=56&description=56&content=56
换句话说:
'http://someurl?slug='+params.term+'&title='+params.term+'&description='+params.term+'&content='+params.term
如您所见,params.term
成为 API 在 URL 上发送的值。
但我不知道如何使用 Select2 实现此目的。我一直在寻找一些信息但没有成功,这就是我到目前为止所看到的:
- https://select2.github.io/options.html
- https://github.com/select2/select2/issues/3548
- https://select2.github.io/options-old.html
但是none说出我需要什么。有人知道如何实现吗?
更改数据对象以反映您希望在查询字符串中具有的属性:
data: function (params) {
return {
slug: params.term,
description: params.term,
content: params.term
};
},
在开发工具网络中仔细检查这确实是作为 GET 完成的,否则尝试将 type:'GET'
添加到 ajax 选项