0

我正在创建一个简单的 select2 搜索框,其中包含对 php 页面的远程请求。

我选择使用“json”而不是“jsonp”,它似乎工作正常。

问题是结果是白色的:没有写入元素列表。

在我无法发布的图像中,因为“我需要至少 10 个声望才能发布”... -.- 您可以看到带有字母“d”的输入框,并且:

  1. 没有加载图标(因为搜索已正确结束)
  2. 没有“搜索”写入(因为搜索已正确结束)
  3. 搜索框高度正好是 2 个结果,您可以选择结果,但文本不可见.. 您只看到蓝色选择..

代码如下:

function MultiAjaxAutoComplete(element, url) {
    $(element).select2({
        minimumInputLength: 1,
        ajax: {
            url: url,
            dataType: 'json',
            data: function(term, page) {

                return {
                    q: term,
                    page_limit: 10
                };
            },
            results: function(data, page) {
                return {
                    results: data
                };
            }
        },
        formatResult: formatResult,
        formatSelection: formatSelection,
        initSelection: function(element, callback) {
            var data = [];
            $(element.val().split(",")).each(function(i) {
                var item = this.split(':');
                data.push({
                    id: item[0],
                    title: item[1]
                });
            });
            //$(element).val('');
            callback(data);
        }
    });
};

function formatResult(movie) {
    return '<div>' + movie.title + '</div>';
};

function formatSelection(data) {
    return data.title;
};



MultiAjaxAutoComplete('#advertiser', '/AJAXController');

并且返回的json数据如下

[{"id":"12889","title":"Donnie Darko" },
 {"id":"8",    "title":"Another title"}
]

PS:我得到了两个结果,因为目前,我将 json 数据作为直接输出文本返回,并带有“echo <<< EOF ...”

谢谢你,毛罗

4

1 回答 1

0
var data = [
  { "id":"12889", "title":"Donnie Darko" },
  { "id":"8", "title":"Another title"}
]

$(element).select2('data', data);
于 2013-07-29T20:20:12.750 回答