【问题标题】:Select2 doesnt show the AJAX results even though proper JSON format即使正确的 JSON 格式,Select2 也不显示 AJAX 结果
【发布时间】:2014-07-26 13:27:30
【问题描述】:

这是我的代码:

$('.selecter_test').select2(
            {
                placeholder: 'Enter a username...',
                minimumInputLength: 0,
                allowClear: true,
                ajax: {
                    quietMillis: 200,
                    url: "/ajax/test",
                    dataType: 'jsonp',
                    data: function (term, page) {
                        return {
                            q: term
                        };
                    },
                    results: function (data, page) {

                        return { results: data.Results};
                    }

                }
            });

在后端,我加载一个带有 id 和 name 的数组,并用 json_encode 函数返回它。我的 AJAX 调用响应如下所示(在 Chrome 中的 Network/Response 标签下查看):

[{"id":4017,"text":"10anabanana10"},{"id":4813,"text":"adria14na.bbb@gmail.com"}... ]

但是,我的 Select2 只是一直显示“正在搜索...”文本并且什么也不显示。我听说我不需要使用 formatResult 和 formatSelectin 函数,因为我使用的是常规格式。

【问题讨论】:

  • dataType: 'jsonp'?那是怎么回事?
  • 这是他们建议在文档页面上使用的格式:ivaynberg.github.io/select2/#ajax
  • “远程”在该上下文中的意思是“在您自己以外的域上”。这似乎不是这里的情况。
  • 不管怎样,看来只需要将结果回调改成return { results: data }即可。我在这里看不到任何 Results 属性。
  • 你说得对,我刚刚做了,但我仍然有问题,它一直显示“搜索...”,但没有任何反应,尽管我认为响应格式正确...

标签: javascript jquery ajax json jquery-select2


【解决方案1】:

我通过将数据类型参数更改为 json 而不是 jsonp 来修复它。在 Stackoverflow 的其他地方找到了答案。乔恩的观点很好。

【讨论】:

    猜你喜欢
    • 2016-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-12
    • 1970-01-01
    • 2017-08-16
    • 2016-09-11
    • 2019-02-11
    相关资源
    最近更新 更多