我无法从ASP.NET webmethod中提取返回的json数据中的数据。这是我的代码:
$.ajax({
type: "POST",
url: "myurl",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (appdata) {
console.log(appdata.d);
var testdata = appdata.d;
//$.each(testdata, function (index, appt) {
// console.log(appt);
//});
}
});
console.log(appdata.d)
以下列格式返回数据
[
{
'PRODUCTID' : '51',
'ENTRYDATE' : '2/13/2013 12:00:00 AM',
'CATEGORYID' : ''
},
{
'PRODUCTID' : '52',
'ENTRYDATE' : '2/13/2013 12:00:00 AM',
'CATEGORYID' : ''
}
]
代码
//$.each(testdata, function (index, appt) {
// console.log(appt);
//});
导致以下错误:
Uncaught TypeError: Cannot use 'in' operator to search for...
如何提取此数据?
修改
console.log(appdata)
给出以下内容
Object {d: "[{'PRODUCTID' : '51','ENTRYDATE' : '2/13…ENDTIME' : '2/13/2013 3:45:00 AM','CATEGORYID' : ''}]"}
答案 0 :(得分:2)
我怀疑如果你console.log( appdata )
得到这样的话:
{
d: "[
{
'PRODUCTID' : '51',
'ENTRYDATE' : '2/13/2013 12:00:00 AM',
'CATEGORYID' : ''
},
..."
}
也就是说,服务器将d
中包含的数组包装在引号中。响应是有效的JSON,因此jQuery不会抱怨它,但d
的值不是对象而是另一个JSON字符串。
修复服务器脚本以使其不这样做,或者如果不可能,则将字符串解析为单独的JSON实体。