0

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

1 回答 1

2

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

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

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

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

于 2013-01-29T14:49:55.463 回答