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

时间:2013-03-01 14:59:33

标签: jquery json jquery-select2

以下是从我的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 };
        }
    }
});

3 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:6)

如果你的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"}]

答案 2 :(得分:1)

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

$opts = [];

foreach($items as $item)

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

return new JsonResponse($opts);

关键'结果'很重要