【问题标题】:jQuery.each - How to iterate over JSON objects element?jQuery.each - 如何迭代 JSON 对象元素?
【发布时间】:2011-05-13 20:24:59
【问题描述】:

我对 JSON 很陌生。我需要遍历来自 AJAX 的 JSON 响应,实际上,我正在从 db 表中以 2、3、7、9、3 的形式获取复选框值。现在我被每个数字的迭代困住了。

如果您在 FF 控制台区域运行以下代码,您会注意到它正在循环针对每个数字 NOT THE VALUE。

请指导我。

var srv = {"services":"26,29"};

jQuery.each( srv.services, function(i, v) {
    console.log( v );
});

任何帮助将不胜感激。 谢谢:)

【问题讨论】:

    标签: javascript jquery arrays json each


    【解决方案1】:

    srv.services 是一串逗号分隔值,因此$.each() 将无法正常工作。不过,您可以将split() 放入一个数组中:

    var srv = {"services":"26,29"};
    
    jQuery.each(srv.services.split(","), function(i, v) {
        console.log( v );
    });
    

    工作演示:http://jsfiddle.net/AndyE/veP4p/

    你也可以让你的 JSON 服务返回一个数组而不是一个字符串,例如{"services":[26, 29]}。如果您使用正确的符合 JSON 标准的方法进行编码并且数据是一个数组,那么这将在服务器上自动为您完成。

    【讨论】:

    • +1 建议在服务器级别更改数据格式。
    • 非常感谢你,安迪。你给了我一个关于 JSON 的好概念。
    【解决方案2】:

    你必须先创建一个数组

    var srv = {"services":"26,29".split(",")};
    
    jQuery.each( srv.services, function(i, v) {
        console.log( v );
    });
    

    【讨论】:

      【解决方案3】:

      它不是有效的 json 数组,你的 json 数据应该是这样的:

      var srv = {"services": ["26", "29"]};
      

      ..或者你可以使用 js split 函数来分割你的字符串数据:

      jQuery.each(srv.services.split(","), function(i, v) {
          console.log( v );
      });
      

      【讨论】:

        【解决方案4】:

        不确定这是否是您问题的答案,但鉴于上面的声明,请在迭代之前尝试在 , 上拆分:

        var srv = {"services":"26,29"};
        
        jQuery.each( srv.services.split(','), function(i, v) {
            console.log( v );
        });
        

        (Demo)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-05-21
          • 2019-07-21
          • 1970-01-01
          • 2015-03-29
          • 2016-01-25
          • 1970-01-01
          • 2018-08-19
          • 2022-01-23
          相关资源
          最近更新 更多