0

私はJquery AJAX POSTメソッドを持っています。これはasp.netのWebメソッドを呼び出します。ajax メソッドは json データを取得します。データ形式は次のとおりです。

[
    {
        "Title": "Test2",
        "Name" : "AMIT",
        "IsRoot": "True"
    },
    {
        "Title": "Test3",
        "Name" : "AMIT1",
        "IsRoot": "False"
    },
    {
        "Title": "Test4",
        "Name" : "AMIT2",
        "IsRoot": "True"
    }
]

「 http://jsonlint.com/ 」サイトでデータ形式を検証したところ、データ形式が正しいことがわかりました。データをループして各属性にアクセスしたいのですが、それを取得できません。私は3であるはずの配列の合計長を見つけようとします.しかし、それは私に9(各属性を意味します)を与えています

alert(data.d.length); // giving 9 (should give 3)

var jsondata = data.d;

alert(jsondata[1].Title); //undefined (should give Test3)
alert(jsondata[2].Title); //undefined (should give Test4)
alert(jsondata[1].Name); //undreined (should give AMIT1)

var key, count = 0;
for (key in data.d) {
    if (data.d.hasOwnProperty(key)) {
        count++;
    }
}
alert(count); // giving 9 (should give 3)

どんな助けも大歓迎です。

私のajax呼び出し方法は

 $.ajax({
    type: "POST",
    contentType: "application/json; charset=utf-8",
    url: "WebForm1.aspx/GetRootData",
    dataType: "json",
    success: function (data, textStatus) {
        var jsondata = data.d;

        alert(jsondata[1].Title);
        alert(jsondata[2].Title);
        alert(jsondata[1].MimeType);

        var key, count = 0;
        for (key in data.d) {
            if (data.d.hasOwnProperty(key)) {
                count++;
            }
        }
        alert(count);
    },
    error: function (xhr, ajaxOptions, thrownError) {
        alert(xhr.status);
        alert(xhr.responseText);
        alert(thrownError);
    }
});

なぜデバッガーも機能しないのかわかりません.. :(

4

1 に答える 1

0

みんなありがとう。最後に問題を解決しました。

解決策は

var jsonObject = eval(data.d);

これで、すべてのデータが正常に返されます..

alert(jsonObject.length); //Now it's returning 2

alert(jsonObject[1].Title); // it's returning Test3 now.

ありがとう..

于 2013-07-20T14:56:07.863 に答える