【发布时间】:2016-06-23 16:58:44
【问题描述】:
我有一个 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);
}
});
不知道为什么调试器也不起作用.. :(
【问题讨论】:
-
alert不是一个有用的调试工具。使用浏览器内置的调试器设置断点、单步执行代码、检查变量等。所有现代浏览器都有它们。例如,在 Chrome 或 IE 中,只需按 F12 即可打开调试器。 -
从您描述的症状来看,您没有获得预期的数据。如果你使用上面提到的调试器,你可以看到你得到的真实数据是什么。
-
同时添加您的 Ajax 调用代码
-
这里有一个关于如何使用控制台的教程:netmagazine.com/tutorials/javascript-debugging-beginners。也看看这个问题:stackoverflow.com/q/11922383/218196。
data是什么?你为什么访问data.d? -
添加了 Ajax 调用代码.. @Govind KamalaPrakash Malviya
标签: javascript ajax json jquery getjson