javascript使select 2使用外部源设置的url

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) {

我用它来从数据库中挑选游戏,但是,我希望从中搜索的文件将根据从下拉列表中选择的内容而变化

如何获得它,使select2始终使用最新的选择器url

因此,如果我从页面上的选择框中选择某个选项,它会将选择器url更改为ajax文件以进行搜索。问题是,select2似乎只使用原始值

以下是我当前的代码:

    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个文档。见下面我的答案。