解析多维数组的json对象

时间:2012-12-05 10:38:58

标签: javascript jquery multidimensional-array

{
    "prev": [
        "demo/medium/Web081112_P002_medium.jpg",
        "demo/medium/Web081112_P003_medium.jpg"
    ],
    "curr": [
        "demo/medium/Web081112_P004_medium.jpg",
        "demo/medium/Web081112_P005_medium.jpg"
    ],
    "next": [
        "demo/medium/Web081112_P006_medium.jpg",
        "demo/medium/Web081112_P007_medium.jpg"
    ]
}

这是我得到的json:

<script>
  $(document).ready(function(){
       $.ajax({
        type: "GET",
        url: "scandir.php",
        data: "page=5",
        dataType: 'json',
        success: function (data) { 
        $.each(data, function(i, data){
        $('#img'+i).attr('src',data[1]);
    });
    }
});
});
</script> 

我想这样做:Assign <img id = "img1" src="demo/medium/Web081112_P002_medium.jpg">等等......

收集的数据[1]仅捕获列(3,5,7)中的值。怎么实现这个?谢谢

3 个答案:

答案 0 :(得分:0)

如果您的数组总是有两个元素,请尝试此操作:

$.each(data, function(i, data){
    $('#img'+(2*i)).attr('src',data[0]);
    $('#img'+(2*i + 1)).attr('src',data[1]);
});

如果你有两个以上,那么你需要一个内循环:

var idx = 0;
$.each(data, function(i, data) {
    $.each(data[i], function(j, dataj) {
        $('#img'+(idx)).attr('src',dataj[j]);
        ++idx;
    });
});

答案 1 :(得分:0)

这不是一个多维数组,即一个将数组作为属性的对象。

要遍历数组,循环中需要另一个循环。使用单独的计数器来跟踪图像编号。

var count = 1;
$.each(data, function(i, row){
  $.each(row, function(j, item){
    $('#img' + count).attr('src', item);
    count++;
  });
});

注意:对象中的属性没有特定的顺序,因此它们可能会以不同的顺序排列,具体取决于访问者使用的浏览器。

答案 2 :(得分:0)

因为你只是在这里设置第二个数据对象的src属性......

$('#img'+i).attr('src',data[1]);

你只得到(3,7,5)......

你必须使用两个$.each循环来获取所有src ..

试试这个

var k=1;

$.each(data, function(i, data1){
  $.each(data1, function(j, data2){
     $('#img' + k).attr('src', data2);
       k++;
   });
});