1

我正在尝试为.eachJSON 数组中的对象编写语句。

$.ajax({
    url: url,
    dataType: 'json',
    success: function(data){
        $.each(data, function (key, value){
            ...do stuff...
        }
});

问题是,它只返回一个结果,因为它只在我需要它为.each里面的对象做一个时才做一个。我确定它很简单,但我无法弄清楚它是什么。data.eachdata.each(data.something ...)

编辑 每个评论请求,数据如下所示:

[["data1","data2","data3"],
 ["data1","data2","data3"],
 ["data1","data2","data3"]
]

编辑2

这是我的工作代码的JSFiddle。如果我将.each函数更改为只做一个alert它可以工作,但是当我尝试构建 div 时,它只会吐出一个条目。

4

5 回答 5

1

我最初建议使用 $.map() 创建一个数组。

但实际问题是 OP 在循环的每次迭代中都覆盖了 html。编辑我的回复以显示实际答案。

答案:OP 需要在他的 .each() 循环中将 .html() 更改为 .append() 。

于 2012-12-19T17:18:34.763 回答
1

听起来你需要一个嵌套循环:

$.ajax({
    url: url,
    dataType: 'json',
    success: function(data){
        $.each(data, function (idx1, value1){
            $.each(value1, function (idx2, value2){
                //...do stuff...
            });
        });
    });
于 2012-12-19T17:24:22.790 回答
1

你的小提琴的问题不是.each循环——而是你.html()用来添加代码,它将用你的新代码替换指定元素内的所有内容。

使用.append()代替,.html()你应该没问题。

于 2012-12-19T17:57:50.683 回答
0

可能它不是JSON对象,只需执行以下操作

$.each($.parseJSON(data), function (key, value){
  ... stuff...
}

根据对象,你应该做一个Map

// Therefore, convert it to a real array
var realArray = $.makeArray( data )

// Now it can be used reliably with $.map()
$.map( realArray, function(val, i) {
  // do something 
});

编辑 - 在小提琴上测试

使用您的对象,我们可以检查它是否是嵌套数组,因此您必须对其进行双重循环:

var data = [["data1","data2","data3"],
 ["data1","data2","data3"],
 ["data1","data2","data3"]
];

$.each(data, function(key, item) {
    $.each(item, function(i, val) {
        alert(val);
    })
});

小提琴

编辑 2 - 适合您情况的代码!

$.ajax({
    url: url,
    dataType: 'json',
    success: function(data){
        $.each(data, function(key, item) {
            $.each(item, function(i, val) {
                alert(val);
            })
        }
    }
});

希望能帮助到你!!

于 2012-12-19T17:21:36.773 回答
0

再使用一个循环

$.each(data, function(key, value) {
    $.each(value, function(i, val) {
        console.log(val)
    })
})​

检查小提琴

于 2012-12-19T17:24:52.220 回答