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 に答える