2011-02-18 95 views
0

我已经使用Simon Whatley's自动完成插件的代码。现在,我需要帮助解析一个json数据。这里是我的代码:在jquery自动完成中解析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

请帮助。谢谢!

回答

0

您只需简单地使用

var countries = JSON.parse(data); 

由于您使用jQuery虽然,这是一个比较安全的情况下使用jQuery.parseJSON()浏览器不具备原有的语法分析器:

var countries = jQuery.parseJSON(data); 
+0

喜安德鲁!感谢您的回应。我尝试了你的建议,但仍然无效。这就是我得到的。当我输入文本字段时,我得到“undefined”作为搜索结果。当我点击时,整个json字符串出现在字段中。 可能是什么问题?谢谢。 – danielle 2011-02-22 01:09:53