不能 select json-结果 select2

can't select json-results on select2

有这样的 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 的答案,但没有成功。可能我只是 missed/messed 东西。

还有这一行

console.log(connection);

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

Select2 版本为 4.0

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

Select2 no longer supports a custom id or text to be used, but provides integration points for converting incorrect data to the expected format.

所以问题不在我提供的代码中(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 }

一切都很顺利!仍然不知道是什么驱使我输入文本而不是 select。