Как получить общее количество записей Json, используя JQuery? - PullRequest
28 голосов
/ 17 января 2009

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

Ответы [ 7 ]

68 голосов
/ 17 января 2009

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

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

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

alert(json.length)
15 голосов
/ 14 декабря 2010

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

предусмотрена простая функция, которая удовлетворяет потребности.

Вот фрагмент кода, который работал для меня:

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

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

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

6 голосов
/ 17 января 2009

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

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

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

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

4 голосов
/ 11 марта 2016

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

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

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

4 голосов
/ 17 января 2009

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

2 голосов
/ 13 января 2016

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

2 голосов
/ 23 июля 2010

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

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);
            }
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...