【问题标题】:How do I get the total Json record count using JQuery?如何使用 JQuery 获取总 Json 记录数?
【发布时间】:2009-01-17 12:06:07
【问题描述】:

我找不到任何关于使用 jQuery 获取 JSON 总记录数的信息。

这是返回的 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 显示了正确的记录?
  • 是的,除了总记录数之外,一切正常。
  • 为什么需要记录数? $.each 按预期工作,对吗?

标签: jquery json


【解决方案1】:

如果你有这样的事情:

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

那么,你可以这样做:

alert(json.length)

【讨论】:

  • 感谢您的回答,但我尝试了您的代码,但对我不起作用。
  • 这显示的是 JSON 字符串长度,而不是数组计数
  • 谢谢@tiago!你最终给了我我的解决方案,如下:success: function (response) { console.log(response.length); },
【解决方案2】:

OP 正在尝试计算 JSON 对象中的属性数量。这可以通过迭代器中增加的临时变量来完成,但他似乎想在迭代开始之前知道计数。 this page底部提供了一个简单的满足需要的功能。

这是对我有用的代码的剪切和粘贴:

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

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

这应该适用于 JSON 对象。对于可能从其原型链派生属性的其他对象,您需要添加一个 hasOwnProperty() 测试。

【讨论】:

    【解决方案3】:

    为什么在这种情况下你想要长度?

    如果您确实想检查长度,请让服务器返回一个带有键值对的 JSON 数组,如下所示:

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

    在 JSON 中,[ 和 ] 表示一个数组(有长度属性),{ 和 } 表示一个对象(没有长度属性)。您可以遍历对象的成员,但您也将获得函数,除了遍历它们之外,对成员数量进行长度检查是无用的。

    【讨论】:

      【解决方案4】:

      尝试以下方法:

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

      不适用于 IE8 及更低版本。

      【讨论】:

        【解决方案5】:

        您的 json 不是数组,它没有长度属性。 您必须更改数据返回或获取数据计数的方式。

        【讨论】:

        • 即使我更改了Json结果(我确定它是正确的),长度仍然不起作用。
        【解决方案6】:

        你要找的是

        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”,它具有可用的“长度”,但它返回错误。然而,也许它是特定于我的 JSON 结构的。
        【解决方案7】:

        也许您可能想先尝试 JSON.parse 您的返回结果,然后您可以通过 .length 获取计数

        【讨论】:

          猜你喜欢
          • 2014-05-09
          • 1970-01-01
          • 2013-12-19
          • 1970-01-01
          • 2017-05-23
          • 2022-10-24
          • 2013-09-03
          • 1970-01-01
          相关资源
          最近更新 更多