Jquery自动完成JSON字符串解析错误

时间:2013-01-16 16:47:39

标签: jquery asp.net jquery-ui jquery-ui-autocomplete

我想在我的网络应用程序中使用Jquery autocomplete但遇到问题。我正在ASP.NET和JQuery中开发我的应用程序。

以下是Autocopmlete'成功'功能的一部分:

success: function (data) {
     response($.map(data.d, function (item) {
         return {
              label:  item.key,
             value: item.value
            }
       }));
     },

我的webservice返回以下JSON:

"[{"key":"Bread","value":"3"}]"

当我运行它时,我收到Javascript错误:

Uncaught TypeError: Cannot use 'in' operator to search for '42' in [{"key":"bread","value":"3"}] 

从我所知道的,看起来返回的JSON的格式不是$ .map函数。此外,结果可能会返回几个项目,而不仅仅是上面的一个项目。

任何人都可以帮我解决这个问题。 我使用JSON作为dataTypeGET作为Ajax调用中的type

2 个答案:

答案 0 :(得分:7)

我建议你不要使用任何其他可以使用的方法:

success: function (data, status, xhr) {
    var jsonArray = JSON.parse(data);  // Normal way
}

其他方式

success: function (data, status, xhr) {
    var jsonArray = $.parseJSON(data); // using jQuery
}

通过这种方式,它将转换为一个简单的JavaScript对象,您可以在UI / DOM上轻松操作。

答案 1 :(得分:0)

你是对的 - 你的JSON是一个包含单个对象的数组。你期待的只是那个对象。

尝试修改代码:

success: function (data) {
  data = data[0];