【问题标题】:parsing json in jquery autocomplete在 jquery 自动完成中解析 json
【发布时间】:2011-06-29 13:50:33
【问题描述】:

我已经为自动完成插件使用了Simon Whatley's 代码。现在,我需要帮助来解析 JSON 数据。这是我的代码:

    $("#country").autocomplete("data/country.cfm",{
        minChars:1,
        delay:0,
        autoFill:false,
        matchSubset:false,
        matchContains:1,
        cacheLength:10,
        selectOnly:1,
        dataType: 'json',
        extraParams: {
                format: 'json'
        },
        parse: function(data) {
            var parsed = [];
            for (var i = 0; i < data.length; i++) {
                 parsed[parsed.length] = {
                data: data[i],
                value: data[i].NAME,
                result: data[i].NAME
                 };
            } 
            return parsed;
        },
        formatItem: function(item) {
            return item.NAME;
        }
   });

例如,我将其作为我的 JSON 字符串:

[{"name":"country1"},{"name":"country2"},{"name":"country3"}]

当然,我希望得到的结果是值 country1、country2、country3。但是,当我输入(例如,我输入“cou”)时,我现在在文本框中得到的是“未定义”。如果我点击它,文本字段中显示的是整个字符串 [{"name":"country1"},{"name":"country2"},{"name":"country3"}]。

我也尝试了这些但仍然无法正常工作: jquery autocomplete, how to parse a json request with url info? jquery autocomplete with json response

请帮忙。谢谢!

【问题讨论】:

    标签: json jquery-plugins


    【解决方案1】:

    你可以简单地使用

    var countries = JSON.parse(data);
    

    由于您使用的是 jQuery,如果浏览器没有原生解析器,使用 jQuery.parseJSON() 会更安全一些:

    var countries = jQuery.parseJSON(data);
    

    【讨论】:

    • 你好安德鲁!感谢您的回复。我尝试了你的建议,但仍然没有奏效。这就是我得到的。当我在文本字段中输入时,我得到“未定义”作为搜索结果。当我单击它时,整个 json 字符串出现在该字段中。可能是什么问题呢?谢谢。
    • 嗨!我发现 Simon 的自动完成插件希望结果在单独的行上,而不是 JSON 格式。请参阅stackoverflow.com/questions/5100047/… 谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-29
    • 2016-05-29
    相关资源
    最近更新 更多