$ .ajax() - 使用返回的json数据

时间:2013-01-29 14:31:18

标签: json jquery

我无法从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' : ''}]"}

1 个答案:

答案 0 :(得分:2)

我怀疑如果你console.log( appdata )得到这样的话:

{
    d: "[
    {
      'PRODUCTID' : '51',
      'ENTRYDATE' : '2/13/2013 12:00:00 AM',
      'CATEGORYID' : ''
    },
    ..."
}

也就是说,服务器将d中包含的数组包装在引号中。响应是有效的JSON,因此jQuery不会抱怨它,但d的值不是对象而是另一个JSON字符串。

修复服务器脚本以使其不这样做,或者如果不可能,则将字符串解析为单独的JSON实体。