Я не смог найти ничего о том, как получить общее количество записей 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);
}
});
});
});
Да, все работает хорошо, кроме общего количества записей.
Зачем нужен счетчик записей? $ .Each работает как положено, верно?

Если у вас что-то вроде этого:
var json = [ {a:b, c:d}, {e:f, g:h, ...}, {..}, ... ]
тогда вы можете:
alert(json.length)
Спасибо за ответ, но я пробовал ваш код, но у меня не работает.
Это показывает длину строки JSON, а не количество массивов.
Спасибо @tiago! В конечном итоге вы дали мне мое решение, которое было следующим: success: function (response) { console.info(response.length); },
Ваш json не является массивом, у него нет свойства length. Вы должны изменить свой возврат данных или способ получения подсчета данных.
Даже я изменил результат Json (уверен, что он правильный), длина все равно не работает.
Зачем вам в этом случае длина?
Если вы хотите проверить длину, попросите сервер вернуть массив JSON с такими парами ключ-значение:
[
{key:value},
{key:value}
]
В JSON [и] представляет массив (со свойством длины), {and} представляет объект (без свойства длины). Вы можете перебирать элементы объекта, но вы также получите функции, делая бесполезную проверку длины числа членов, за исключением итерации по ним.
Вы ищете
j.d.length
d - это ключ. По крайней мере, в моем случае я использую веб-сервис .NET.
$.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);
}
});
У меня это не сработало, я вызвал hasOwnProperty, у которого есть доступная длина, но она вернула false. Возможно, это было связано со структурой моего JSON.
OP пытается подсчитать количество свойств в объекте JSON. Это можно сделать с помощью увеличенной временной переменной в итераторе, но он, похоже, хочет знать счетчик до начала итерации. Внизу эта страница представлена простая функция, отвечающая требованиям.
Вот фрагмент кода, который у меня сработал:
function countProperties(obj) {
var prop;
var propCount = 0;
for (prop in obj) {
propCount++;
}
return propCount;
}
Это должно хорошо работать для объекта JSON. Для других объектов, которые могут получать свойства из своей цепочки прототипов, вам потребуется добавить тест hasOwnProperty ().
Возможно, вы захотите сначала попробовать JSON.parse вашего возвращаемого результата, затем вы можете получить счет по .length
Попробуйте следующее:
var count=Object.keys(result).length;
Не работает IE8 и ниже.
Но обработчик успешного выполнения $ .each показывает правильные записи?