jQuery.each - 如何迭代JSON对象元素?

时间:2010-11-22 13:27:58

标签: javascript jquery arrays json each

我很喜欢玩JSON。我需要迭代来自AJAX的JSON响应,实际上,我在2,3,7,9,3的表单中从db表中获取checkboxe值。现在我对每个数字都进行了迭代。

如果您在FF控制台区域中运行以下代码,您会发现它正在针对每个数字进行循环而不是值。

请指导我。

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

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

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

4 个答案:

答案 0 :(得分:7)

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 :(得分:1)

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

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

..或者因为您可以使用js split function分割字符串数据:

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

答案 2 :(得分:0)

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

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

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

Demo

答案 3 :(得分:0)

您必须先创建一个数组

var srv = {"services":"26,29".split(",")};

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