我想在我的网络应用程序中使用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
作为dataType
和GET
作为Ajax调用中的type
。
答案 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];