5

这是从我的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 };
        }
    }
});
4

3 回答 3

6

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

于 2013-03-01T15:34:52.437 回答
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"}]

于 2013-03-01T15:37:43.927 回答
2

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

$opts = [];

foreach($items as $item)

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

return new JsonResponse($opts);

关键的“结果”很重要

于 2015-12-09T08:02:26.150 回答