1

我想在我的 Web 应用程序中使用Jquery 自动完成功能,但遇到问题。我正在用 ASP.NET 和 JQuery 开发我的应用程序。

这是 Autocoplete 'succes' 函数的一部分:

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

我的网络服务返回以下 JSON:

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

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

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

据我所知,返回的 JSON 对于 $.map 函数的格式似乎不正确。此外,结果可能会返回多个项目,而不仅仅是一个如上所示。

谁能帮我解决这个问题。我在 Ajax 调用中使用JSONasdataTypeGETas 。type

4

2 回答 2

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 上进行操作。

于 2013-01-16T18:55:04.890 回答
0

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

尝试像这样修改您的代码:

success: function (data) {
  data = data[0]; 
于 2013-01-16T16:54:52.573 回答