Javascript 选择2通过AJAX加载JSON结果集并在本地搜索

Javascript 选择2通过AJAX加载JSON结果集并在本地搜索,javascript,jquery,ajax,json,jquery-select2,Javascript,Jquery,Ajax,Json,Jquery Select2,到目前为止,我一直在使用Select2的常规AJAX方法在服务器端搜索和过滤数据,但现在我有了一个用例,当select打开时,我希望通过AJAX检索所有结果,然后使用现在存储在本地的那些结果来搜索和过滤 我在网上搜寻了一些例子来说明如何做到这一点,我发现很多人说应该使用查询方法,而不是AJAX助手。不幸的是,我没有找到任何例子 到目前为止,我所管理的只是基本的: $('#parent').select2({ placeholder: "Select Parent", minimumInp

到目前为止,我一直在使用Select2的常规AJAX方法在服务器端搜索和过滤数据,但现在我有了一个用例,当select打开时,我希望通过AJAX检索所有结果,然后使用现在存储在本地的那些结果来搜索和过滤

我在网上搜寻了一些例子来说明如何做到这一点,我发现很多人说应该使用查询方法,而不是AJAX助手。不幸的是,我没有找到任何例子

到目前为止,我所管理的只是基本的:

$('#parent').select2({
  placeholder: "Select Parent",
  minimumInputLength: 0,
  allowClear: true,
  query: function (query) {
      //console.log(query);
      query.callback(data);
  }
});

data = {
 more: false,
 results: [
    { id: "CA", text: "California" },
    { id: "AL", text: "Alabama" }
 ]
}
数据正在传递给select,但未实现查询筛选


我正在努力理解select2文档,如果您能提供帮助或链接到示例,我将不胜感激。

尝试以下操作-将json数据预加载到局部变量中,并在准备就绪时将其绑定到select2对象

<script>
function format(item) { return item.text; }
var jresults;
$(document).ready(function() {
    $.getJSON("http://yoururl.com/api/select_something.json").done(
        function( data ) {
            $.jresults = data;
            $("#parent").select2(
                {formatResult: format,
                 formatSelection: format,
                 data: $.jresults }
            );
        }
    )
});
</script>

您必须实现过滤器服务器端,如下所述:嗨,克里斯蒂安,谢谢您的评论。我已经使用select2进行了服务器筛选。不幸的是,对于这个特定的用例,服务器过滤不是一个选项,这就是为什么我追求客户端过滤。我知道这是可以做到的。谢谢你的回答。是的,我最终得到了一个类似的解决方案,而不是调用外部格式化程序。您还可以执行以下操作:数据:{results:data,text:'myKey'}