【问题标题】:Select2 Ajax results could not be loaded无法加载 Select2 Ajax 结果
【发布时间】:2019-07-13 13:13:04
【问题描述】:

每当我尝试在我的 select2 ajax 搜索栏中搜索结果时,我都会收到以下消息:

'无法加载结果'

HTML

<select class="js-data-example-ajax form-control" multiple="multiple"></select>

Javascript

$('select').each(function(idx, ele) {
            $(ele).select2({
                theme: 'bootstrap4',
                placeholder: ele.getAttribute('placeholder'),
                ajax: {
                    url: '/product/api/search',
                    dataType: 'json' },
                    type: 'GET',
            });
        });

我认为我的 Ajax 设置有误,您能帮忙吗?

【问题讨论】:

  • 如果您在浏览器中调用 /product/api/search,您会得到 select2 的有效 json,例如 id 和 text?
  • 您的 ajax 脚本也没有正确结束。您需要将 } 从 ajax 末尾的 dataType 中移出
  • @daremachine 是的,它以 JSON 格式返回结果,您能给我一个语法正确的答案吗?
  • 查看文档select2.org/data-sources/ajax中的processResults

标签: ajax jquery-select2 ajaxform jquery-select2-4 ui-select2


【解决方案1】:

您的代码应如下所示。不需要 GET 方法。

$('select').each(function(idx, ele) {
  $(ele).select2({
      ajax: {
        url: 'https://api.github.com/search/repositories',
        dataType: 'json'
        // Additional AJAX parameters
      }
   }
});

您的问题也可能出在您的源 json 格式中,因为 select2 需要自己的 results 格式。

为了实现这一点,Select2 需要一个非常具体的数据 格式。这种格式由一个 JSON 对象组成,该对象包含一个数组 结果键作为键的对象。

{
  "results": [
    {
      "id": 1,
      "text": "Option 1"
    },
    {
      "id": 2,
      "text": "Option 2"
    }
}

您还可以将processResults or transform 数据转换为特定格式。

【讨论】:

  • 谢谢,我在搜索栏中得到了结果,但对特定名称的搜索查询不起作用?这可能是什么原因?
  • 查询中的具体名称是什么意思?你还没有查询
  • 例如,如果我用文本“选项 2”搜索 id 2,我在 json 中有 10 个结果,它不会过滤到选项 2。我仍然会看到整个列表。
  • 你在 select2 还是在服务器端搜索?如果要按服务器端过滤,则需要实现 q term 参数。我不能帮助你,因为你可能不知道你在做什么。阅读文档如何处理 ajax。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-05
  • 2015-10-15
  • 2016-11-09
  • 2016-06-04
  • 1970-01-01
  • 2012-11-01
  • 1970-01-01
相关资源
最近更新 更多