Ответ 1
Если у вас есть что-то вроде этого:
var json = [ {a:b, c:d}, {e:f, g:h, ...}, {..}, ... ]
то вы можете сделать:
alert(json.length)
Я ничего не смог узнать о получении общего количества записей JSON с помощью jQuery.
Здесь возвращается 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);
}
});
});
});
Если у вас есть что-то вроде этого:
var json = [ {a:b, c:d}, {e:f, g:h, ...}, {..}, ... ]
то вы можете сделать:
alert(json.length)
OP пытается подсчитать количество свойств объекта JSON. Это можно сделать с добавленной переменной temp в итераторе, но он, похоже, хочет узнать счет до начала итерации. В нижней части этой страницы находится простая функция, которая отвечает потребностям.
Здесь вырезаем и вставляем код, который работал у меня:
function countProperties(obj) {
var prop;
var propCount = 0;
for (prop in obj) {
propCount++;
}
return propCount;
}
Это должно хорошо работать для объекта JSON. Для других объектов, которые могут выводить свойства из их прототипной цепочки, вам нужно будет добавить тест hasOwnProperty().
Зачем вам нужна длина в этом случае?
Если вы хотите проверить длину, попросите сервер вернуть массив JSON с парами "ключ-значение" следующим образом:
[
{key:value},
{key:value}
]
В JSON [и] представляет массив (с свойством length), {и} представляет объект (без свойства length). Вы можете выполнять итерацию через члены объекта, но вы также получите функции, делая проверку длины числа членов бесполезными, за исключением повторения над ними.
Ваш json не является массивом, он не имеет свойства length. Вы должны изменить возврат данных или способ получения данных.
Попробуйте следующее:
var count=Object.keys(result).length;
Не работает IE8 и ниже.
То, что вы ищете, это
j.d.length
Ключ d. По крайней мере, это в моем случае, я использую .NET webservice.
$.ajax({
type: "POST",
url: "CantTellU.asmx",
data: "{'userID' : " + parseInt($.query.get('ID')) + " }",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg, status) {
ApplyTemplate(msg);
alert(msg.d.length);
}
});
Возможно, вам захочется попробовать JSON.parse вернуть результат сначала, тогда вы можете получить счет на .length