首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSON格式的jquery-select2 multi with ajax

JSON格式的jquery-select2 multi with ajax
EN

Stack Overflow用户
提问于 2013-05-17 06:28:00
回答 2查看 45.2K关注 0票数 18

我正在考虑从Select2迁移到Select2,因为Select2有针对ajax的原生方法。Ajax是至关重要的,因为通常你必须加载大量数据。

我使用api.rottentomatoes.com/api/的JSON成功地执行了这个示例

我创建了一个JSON文件来测试ajax,但它不起作用。

我不知道JSON应该是怎样的。似乎没有详细的文档:

https://github.com/ivaynberg/select2/issues/920

我尝试了几种JSON格式,但都没有成功,所以我尝试复制一种类似于api.rottentomatoes的JSON格式,但它不起作用。

我可能漏掉了一些愚蠢的东西。

代码语言:javascript
复制
function MultiAjaxAutoComplete(element, url) {
    $(element).select2({
        placeholder: "Search for a movie",
        minimumInputLength: 1,
        multiple: true,
        ajax: {
            url: url,
            dataType: 'jsonp',
            data: function(term, page) {

                return {
                    q: term,
                    page_limit: 10,
                    apikey: "z4vbb4bjmgsb7dy33kvux3ea" //my own apikey
                };
            },
            results: function(data, page) {
                return {
                    results: data.movies
                };
            }
        },
        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(node) {
    return '<div>' + node.id + '</div>';
};

function formatSelection(node) {
    return node.id;
};


/*MultiAjaxAutoComplete('#e6', 'http://api.rottentomatoes.com/api/public/v1.0/movies.json');*/

MultiAjaxAutoComplete('#e6', 'https://raw.github.com/katio/Quick-i18n/master/test.json');

$('#save').click(function() {
    alert($('#e6').val());
});

我做了这个jsfiddle:

http://jsfiddle.net/Katio/H9RZm/4/

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-17 06:51:51

如果您切换到JSON,请确保将dataType从JSONP切换到JSON。

格式在此处指定:http://ivaynberg.github.io/select2/#doc-query

JSON应该如下所示:

代码语言:javascript
复制
{results: [choice1, choice2, ...], more: true/false }

基本上,选择中唯一必需的属性是id。如果选项包含其他子选项(比如类似于optgroup的选项),那么这些子选项是在children属性中指定的。

默认选项和选择渲染器期望在每个选项中都有一个text属性-这就是用来呈现选项的属性。

因此,使用默认渲染器的美国州的完整示例可能如下所示:

代码语言:javascript
复制
{
    "results": [
        {
            "id": "CA",
            "text": "California"
        },
        {
            "id": "CO",
            "text": "Colarado"
        }
    ],
    "more": false
}

希望这篇文章能帮你入门。

票数 35
EN

Stack Overflow用户

发布于 2018-02-06 19:50:59

所需JSON格式的官方文档:https://select2.org/data-sources/formats

代码语言:javascript
复制
{
  "results": [
    {
      "id": 1,
      "text": "Option 1"
    },
    {
      "id": 2,
      "text": "Option 2"
    }
  ],
  "pagination": {
    "more": true
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16598549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档