can't select json-results on select2

can't select json-results on select2

本文关键字:json-results on select2 select can      更新时间:2023-09-26

有这样的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"}]}

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

所以我一直在努力实现这个问题的答案,但没有运气。可能是我错过/弄乱了什么。

还有这一行

console.log(connection);

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

选择版本为4.0

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

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 }

一切都很顺利!我还是不知道是什么驱使我把它改成text type而不是select