select2 ajax 不会显示返回的 json 数据

Posted

技术标签:

【中文标题】select2 ajax 不会显示返回的 json 数据【英文标题】:select2 ajax won't display json data returned 【发布时间】:2013-02-16 03:04:46 【问题描述】:

这是从我的coldfusion页面返回的json字符串的样子:["client":"Asante","id":12,"client":"City of Lancaster","id":14,"client":"Massey Energy","id":35,"client":"Northeast Utilities","id":68,"client":"Washtenaw","id":50]。 Firebug 声称一切正常,但 select2 插件中没有显示任何数据。

有谁知道可能是什么问题?它应该返回列名还是什么?

select2 调用:

$(".select").select2(
    allowClear: true,
    blurOnChange: true,
    openOnEnter: false,
    ajax: 
        url: "/surveymanagement/admin/client.cfc",
        dataType: 'json',
        data: function (term, page) 
            return 
                method: "GetClientsByName",
                name: term
            ;
        ,
        results: function (data, page) 
            return  results: data ;
        
    
);

【问题讨论】:

您的数据格式必须为["text":"Asante","id":12, ...],否则您需要通过results: data, text: 'client' 【参考方案1】:

您的数据格式必须为["text":"Asante","id":12, ...],否则您需要传递results: data, text: 'client'

【讨论】:

【参考方案2】:

如果您的 json 字符串需要使用 "text": "something" 以外的其他内容,则需要添加以下内容:使用 formatResults 来获取要显示的数据。这是固定版本:

$(".select").select2(
    allowClear: true,
    blurOnChange: true,
    openOnEnter: false,
    ajax: 
        url: "/surveymanagement/admin/client.cfc",
        dataType: 'json',
        data: function (term, page) 
            return 
                method: "GetClientsByName",
                name: term
            ;
        ,
        results: function (data, page) 
            return  results: data ;
        
    ,
    formatResult: function (data) 
        return "<div class='select2-user-result'>" + data.client + "</div>";
    ,
    formatSelection: function (data) 
        return data.client;
    
);

否则 Arun 是对的,您只需要使用格式 ["id":1,"text":"client"]

【讨论】:

【参考方案3】:

是的,它太旧了 :) 但我今天需要它并像这样解决了它(使用 Symfony2):

$opts = [];

foreach($items as $item)

    $opts['results'][] = ['text' => $item->getXyz(), 'id' => $sk->getId()];

return new JsonResponse($opts);

关键的“结果”很重要

【讨论】:

以上是关于select2 ajax 不会显示返回的 json 数据的主要内容,如果未能解决你的问题,请参考以下文章

即使正确的 JSON 格式,Select2 也不显示 AJAX 结果

select2:使用ajax获取json时“文本未定义”

select2 optgroup ajax json格式

jQuery.map() 解析 select2 ajax 调用的结果

Select2 Ajax Laravel - 结果未显示

Select2 Ajax 不匹配结果