Подтвердить что ты не робот

Как получить итоговое количество записей Json с помощью JQuery?

Я ничего не смог узнать о получении общего количества записей 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);
            }
        });
    });
});
4b9b3361

Ответ 1

Если у вас есть что-то вроде этого:

var json = [ {a:b, c:d}, {e:f, g:h, ...}, {..}, ... ]

то вы можете сделать:

alert(json.length)

Ответ 2

OP пытается подсчитать количество свойств объекта JSON. Это можно сделать с добавленной переменной temp в итераторе, но он, похоже, хочет узнать счет до начала итерации. В нижней части этой страницы находится простая функция, которая отвечает потребностям.

Здесь вырезаем и вставляем код, который работал у меня:

function countProperties(obj) {
  var prop;
  var propCount = 0;

  for (prop in obj) {
    propCount++;
  }
  return propCount;
}

Это должно хорошо работать для объекта JSON. Для других объектов, которые могут выводить свойства из их прототипной цепочки, вам нужно будет добавить тест hasOwnProperty().

Ответ 3

Зачем вам нужна длина в этом случае?

Если вы хотите проверить длину, попросите сервер вернуть массив JSON с парами "ключ-значение" следующим образом:

[
  {key:value},
  {key:value}
]

В JSON [и] представляет массив (с свойством length), {и} представляет объект (без свойства length). Вы можете выполнять итерацию через члены объекта, но вы также получите функции, делая проверку длины числа членов бесполезными, за исключением повторения над ними.

Ответ 4

Ваш json не является массивом, он не имеет свойства length. Вы должны изменить возврат данных или способ получения данных.

Ответ 5

Попробуйте следующее:

var count=Object.keys(result).length;

Не работает IE8 и ниже.

Ответ 6

То, что вы ищете, это

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);
            }
        });

Ответ 7

Возможно, вам захочется попробовать JSON.parse вернуть результат сначала, тогда вы можете получить счет на .length