【问题标题】:can't select json-results on select2无法在 select2 上选择 json-results
【发布时间】:2015-09-21 14:14:25
【问题描述】:

拥有类似的 JS:

$(".select2-input").select2({
        placeholder: placeholder,
        id: function(data){return data.id},
        ajax: {
            url: "/autocomplete",
            datatype: 'json',
            data: function (params) {
                return {
                    q: params.term, // search term
                    page: params.page
                };
            },
            results: function (data) {
                return {
                    results: data.results
                };
            },
            cache: true,
            id: function(connection){
                console.log(connection);
            }
        }
    });

来自“/autocomplete” URL 的结果如下:

{"results":[{"id":14953,"text":"Dohn Doe"},{"id":15467,"text":"Jane Dohe"}]}

通过所有这些,我可以看到自动完成结果,但点击任何结果都不会导致任何变化!

所以我一直在尝试实现来自this question 的答案,但没有运气。可能我只是错过/弄乱了一些东西。

还有这一行

console.log(connection);

不向控制台写入任何内容。

Select2 版本为 4.0

【问题讨论】:

  • 你不需要实现id,因为你有一个id。你在哪里定义placeholder? JS控制台有错误吗?
  • placeholder 在上面定义,假设为placeholder = 'abc';。而且我这里没有任何 JS 错误:(
  • 如果不出意外,datatype 应该是 dataType(大写 T)。如果您的结果已经被称为results,则您不需要results
  • 感谢 Dave 的帮助,但即使使用:dataTypereturn data.results;
  • “点击任何结果不会导致任何变化”具体是什么意思?

标签: javascript json jquery-select2 jquery-select2-4 select2-rails


【解决方案1】:

好的,看来我找到了问题所在。首先需要说的是,版本 4.0 中的 select2 不支持我上面提到的 id 选项。这是来自documentation 的摘录来证明这一点:

Select2 不再支持使用自定义 id 或文本,但提供了用于将错误数据转换为预期格式的集成点。

所以问题不在于我提供的代码(dataType 类型除外,感谢 Dave Newton!),而在于我没有提供的代码。所以我有

input :person, as: :text, input_html: { class: "select2-input", "data-placeholder" => person }

– 注意as: :text 部分

一旦我将其更改为

input :person, as: :select, input_html: { class: "select2-input", "data-placeholder" => person }

一切都像魅力一样!仍然不知道是什么驱使我输入文本而不是选择。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-18
    • 2019-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多