选择2搜索不工作的json结果

选择2搜索不工作的json结果,json,wordpress,jquery-select2,Json,Wordpress,Jquery Select2,我已经寻找这个问题的答案好几个小时了,但没有找到任何与我的案件有关的东西 我的设置: 我已经为WordPress主题创建了一个带有弹出窗口的自定义TinyMCE按钮,该按钮允许用户从下拉列表中选择自定义帖子类型的帖子(在本例中为“客户评论”),然后将其ID插入快捷码。由于这个主题将运行的站点有超过1000条评论,我认为最好对下拉列表中的数据进行json编码,然后使用select2搜索有限的结果列表(分页结果),并防止整个事件爆发。除以下两项外,所有这些都已成功运行: json编码的数据会显示出来

我已经寻找这个问题的答案好几个小时了,但没有找到任何与我的案件有关的东西

我的设置: 我已经为WordPress主题创建了一个带有弹出窗口的自定义TinyMCE按钮,该按钮允许用户从下拉列表中选择自定义帖子类型的帖子(在本例中为“客户评论”),然后将其ID插入快捷码。由于这个主题将运行的站点有超过1000条评论,我认为最好对下拉列表中的数据进行json编码,然后使用select2搜索有限的结果列表(分页结果),并防止整个事件爆发。除以下两项外,所有这些都已成功运行:

  • json编码的数据会显示出来,但当我输入搜索词时,select2下拉列表会显示第一个选中的所有评论的列表。即使搜索的文本在列表中,它也找不到结果

  • 从上面看,一旦我输入了搜索词,select2就会显示所有结果,而不是仅显示10个或我设置的任何限制

  • 下面是我如何对数据进行json编码(在一个名为bpl_content.php的文件中):

    返回

    [{"id":12286,"text":"John Doe"},{"id":12285,"text":"Jane Doe"},...]
    
    (退回的物品超过800件,所以上面只显示了2件,但你知道了)

    下面是我用来让菜单填充json数据的javascript:

    $(".js-data-example-ajax").select2({
        placeholder: "Select a Review",
        ajax: {
            url: "_bpl_content/bpl_content.php",
            type: 'POST',
            params: {
                contentType: 'application/json; charset=utf-8'
            },
            dataType: 'json',
            delay: 250,
            data: function (term, page) {
                return JSON.stringify({ q: term, page_limit: 10 });
            },
            processResults: function (data) {
                return {
                    results: data
                };
            },
            cache: true
        },
        minimumInputLength: 3
    });
    

    我一辈子都搞不懂为什么除了搜索和分页之外,一切都在运转。有什么想法吗?

    您的服务器端代码中似乎没有任何用于筛选和分页结果的代码。Select2意识到在服务器端执行此操作更有效,并希望开发人员在服务器端实现它。搜索词将作为
    q
    传递,页面将作为
    page
    传递(如果可用)

    如果您不想在服务器端实现搜索和分页,或者只有一个返回所有结果的端点,您仍然可以解决这个问题。您只需要使用JSON结果作为
    data
    初始化Select2,而不需要使用AJAX功能

    $.ajax({
      url: "_bpl_content/bpl_content.php",
      type: 'POST',
      contentType: 'application/json; charset=utf-8'
    }).then(function (response) {
      $(".js-data-example-ajax").select2({
        placeholder: "Select a Review",
        minimumInputLength: 3,
        data: response
      });  
    });
    

    非常感谢。除了一个小问题外,搜索工作正常。默认情况下,第一个结果(第一次客户审核)始终显示,而不是占位符文本。在构建json数组时,我是否应该更改这些内容?(bpl_content.php)这是
    工作方式的结果(第一个结果始终处于选中状态)。您可以通过在
    中添加空白的
    来解决此问题,该选项可用作占位符选项。
    $.ajax({
      url: "_bpl_content/bpl_content.php",
      type: 'POST',
      contentType: 'application/json; charset=utf-8'
    }).then(function (response) {
      $(".js-data-example-ajax").select2({
        placeholder: "Select a Review",
        minimumInputLength: 3,
        data: response
      });  
    });