我找不到任何关于使用jQuery获取总JSON记录数的信息。
这是返回的JSON:
{"Email":"Please enter your Email.","Password":"Please enter a password."}
这是我的代码:
$(function() {
$("#btnSubmit").click(function() {
$.ajax({
url: "/account/signup",
type: "POST",
dataType: "json",
data: {
Email: $("#strEmail").val(),
Password: $("#strPassword").val()
},
success: function(j) {
$(".errMsg").hide();
alert(j.length); // I couldn't get the total count
$.each(j, function(n) {
$("#err" + n).html(j[n]);
$("#err" + n).show();
})
},
error: function(req, status, error) {
alert(req);
}
});
});
});
答案 0 :(得分:68)
如果你有这样的事情:
var json = [ {a:b, c:d}, {e:f, g:h, ...}, {..}, ... ]
然后,你可以这样做:
alert(json.length)
答案 1 :(得分:15)
OP正在尝试计算JSON对象中的属性数。这可以通过迭代器中递增的临时变量来完成,但他似乎想在迭代开始之前知道计数。 this page的底部提供了满足需求的简单函数。
这是代码的剪切和粘贴,对我有用:
function countProperties(obj) {
var prop;
var propCount = 0;
for (prop in obj) {
propCount++;
}
return propCount;
}
这应该适用于JSON对象。对于可能从其原型链派生属性的其他对象,您需要添加hasOwnProperty()测试。
答案 2 :(得分:6)
为什么在这种情况下你想要长度?
如果你想检查长度,请让服务器返回一个带有键值对的JSON数组,如下所示:
[
{key:value},
{key:value}
]
在JSON中,[和]表示一个数组(具有length属性),{和}表示一个对象(没有length属性)。你可以迭代一个对象的成员,但你也会得到函数,对成员数量进行长度检查,除了迭代它们之外没用。
答案 3 :(得分:4)
你的json不是一个数组,它没有长度属性。 您必须更改数据返回或数据计数方式。
答案 4 :(得分:4)
尝试以下方法:
var count=Object.keys(result).length;
不适用于IE8及更低版本。
答案 5 :(得分:2)
答案 6 :(得分:2)
也许你可能想先尝试JSON.parse你的返回结果然后你可以通过.length获得计数