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

Но обработчик успешного выполнения $ .each показывает правильные записи?

tanathos 17.01.2009 15:34

Да, все работает хорошо, кроме общего количества записей.

silent200 17.01.2009 15:35

Зачем нужен счетчик записей? $ .Each работает как положено, верно?

Tiago 17.01.2009 16:58
Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
29
3
170 116
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

Ответ принят как подходящий

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

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

тогда вы можете:

alert(json.length)

Спасибо за ответ, но я пробовал ваш код, но у меня не работает.

silent200 17.01.2009 15:32

Это показывает длину строки JSON, а не количество массивов.

Sliq 19.02.2014 10:10

Спасибо @tiago! В конечном итоге вы дали мне мое решение, которое было следующим: success: function (response) { console.info(response.length); },

Eric Milliot-Martinez 23.06.2016 19:22

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

Даже я изменил результат Json (уверен, что он правильный), длина все равно не работает.

silent200 17.01.2009 15:47

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

Если вы хотите проверить длину, попросите сервер вернуть массив 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.

Doug Molineux 08.06.2011 19:58

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 и ниже.

Другие вопросы по теме