javascript使select 2使用外部源设置的url
我用它来从数据库中挑选游戏,但是,我希望从中搜索的文件将根据从下拉列表中选择的内容而变化 如何获得它,使select2始终使用最新的选择器url 因此,如果我从页面上的选择框中选择某个选项,它会将选择器url更改为ajax文件以进行搜索。问题是,select2似乎只使用原始值 以下是我当前的代码:javascript使select 2使用外部源设置的url,javascript,jquery,jquery-select2,Javascript,Jquery,Jquery Select2,我用它来从数据库中挑选游戏,但是,我希望从中搜索的文件将根据从下拉列表中选择的内容而变化 如何获得它,使select2始终使用最新的选择器url 因此,如果我从页面上的选择框中选择某个选项,它会将选择器url更改为ajax文件以进行搜索。问题是,select2似乎只使用原始值 以下是我当前的代码: var picker_url = "test1.php"; $(document).on('change', ".category_select", function(e) {
var picker_url = "test1.php";
$(document).on('change', ".category_select", function(e)
{
var id = $(this).val();
if (id == 16)
{
picker_url = "test2.php";
}
});
$(".game_picker").select2({
selectOnClose: true,
width: '100%',
ajax: {
url: picker_url,
dataType: 'json',
delay: 250,
data: function (params) {
return {
q: params.term // search term
};
},
processResults: function (data) {
return {
results: $.map(data, function(obj) {
return { id: obj.id, text: obj.text };
})
};
},
cache: true,
},
minimumInputLength: 2
});
我会保存您的默认选项,然后在需要时通过将新URL扩展到默认选项来重新创建select2: var defaultOptions={ selectOnClose:对, 宽度:“100%”, 阿贾克斯:{ url:test1.php, 数据类型:“json”, 延误:250, 数据:函数参数{ 返回{ q:params.term//搜索词 }; }, processResults:函数数据{ 返回{ 结果:$.mapdata,functionobj{ 返回{id:obj.id,text:obj.text}; } }; }, 是的, 最小输入长度:2 }; //使用默认值首次创建 $.game\u picker.select2defaultOptions; //改变,重新创造 $document.on'change',类别选择,函数E { var期权=默认期权; 如果$this.val==16 { //创建更新url的新选项对象 options=$.extend{},defaultOptions,{url:'test2.php'}; } //使用所需选项创建select2 $.game\u picker.select2选项; };
我会保存您的默认选项,然后在需要时通过将新URL扩展到默认选项来重新创建select2: var defaultOptions={ selectOnClose:对, 宽度:“100%”, 阿贾克斯:{ url:test1.php, 数据类型:“json”, 延误:250, 数据:函数参数{ 返回{ q:params.term//搜索词 }; }, processResults:函数数据{ 返回{ 结果:$.mapdata,functionobj{ 返回{id:obj.id,text:obj.text}; } }; }, 是的, 最小输入长度:2 }; //使用默认值首次创建 $.game\u picker.select2defaultOptions; //改变,重新创造 $document.on'change',类别选择,函数E { var期权=默认期权; 如果$this.val==16 { //创建更新url的新选项对象 options=$.extend{},defaultOptions,{url:'test2.php'}; } //使用所需选项创建select2 $.game\u picker.select2选项; }; 在这里找到了答案: 在这里找到了答案: 我建议使用,如下面的代码:
$('#mySelect2').select2({
ajax: {
url: function (params) {
return '/some/url/' + params.term;
}
}
});
在url函数内部,您可以测试参数以外的其他变量,如以下代码段所示:
$“类别”。选择2{
占位符:选择类别。。。,
宽度:“100%”,
};
$'category'。在'select2:select'上,函数E{
var数据=e.params.data;
console.logcategory,数据;
categ=e.params.data.id;
};
var-categ=1;
$“项目”。选择2{
占位符:选择项。。。,
宽度:“100%”,
阿贾克斯:{
类型:GET,
url:functionparams{
console.logajax func、params、categ;
var url='1〕https://jsonplaceholder.typicode.com/comments?postId=“+categ
返回url;
},
是的,
processResults:functiondata{
返回{
结果:$.mapdata,functionobj{
返回{
id:obj.id,
文本:obj.name
};
}
};
},
}
};
第一类
第2类
我建议使用,如下面的代码:
$('#mySelect2').select2({
ajax: {
url: function (params) {
return '/some/url/' + params.term;
}
}
});
在url函数内部,您可以测试参数以外的其他变量,如以下代码段所示:
$“类别”。选择2{
占位符:选择类别。。。,
宽度:“100%”,
};
$'category'。在'select2:select'上,函数E{
var数据=e.params.data;
console.logcategory,数据;
categ=e.params.data.id;
};
var-categ=1;
$“项目”。选择2{
占位符:选择项。。。,
宽度:“100%”,
阿贾克斯:{
类型:GET,
url:functionparams{
console.logajax func、params、categ;
var url='1〕https://jsonplaceholder.typicode.com/comments?postId=“+categ
返回url;
},
是的,
processResults:functiondata{
返回{
结果:$.mapdata,functionobj{
返回{
id:obj.id,
文本:obj.name
};
}
};
},
}
};
第一类
第2类
这是一个有趣的想法,但它实际上似乎并没有改变url。您的代码也有语法错误。Defaultoptions没有url属性,它有一个ajax属性,它有一个url属性。啊,好的地方,将其更改为ajax:{url:works,但是select2现在抱怨它找不到任何东西,即使调用了正确的文件并且它确实找到了项。这是一个有趣的想法,但是它实际上似乎没有改变url。您的代码也有语法错误。Defaultoptions没有url属性,它有一个ajax属性,它有一个url属性。啊,好的spot、 将其更改为ajax:{url:works,但现在选择2
抱怨它找不到任何东西,即使调用了正确的文件,它也找到了项目。向上投票是您问题的最佳答案,但我建议编辑它并引用正确的链接以选择2个文档。请参阅下面我的答案。向上投票是您问题的最佳答案,但我建议编辑它并参考正确的链接选择2个文档。见下面我的答案。