循环通过JSON数组

时间:2010-03-27 15:39:05

标签: javascript jquery json

我最近发布了另一个问题,直接用户指出了我正确的方向。

$.ajax({ 
        type: 'POST', url: './', data: 'token=' + token + '&re=8', cache: false, timeout: 5000,
        success: function(html){ 
            auth(html);
            var JSON_array = eval(html);
            alert(JSON_array[0].username); 
        }                           
    });

这会正确返回数据,但我想执行一种'foreach'。该数组包含有关多个传入和传出即时消息的数据。因此,如果用户一次与多个人交谈,我需要循环。数组的结构如下。

    Array
(

    [0] => Array
        (
            [username] => Emmalene
            [contents] => 
                          <ul><li class="name">ACTwebDesigns</li><li class="speech">helllllllo</li></ul>
                          <ul><li class="name">ACTwebDesigns</li><li class="speech">sds</li></ul>
                          <ul><li class="name">ACTwebDesigns</li><li class="speech">Sponge</li><li class="speech">dick</li></ul>
                          <ul><li class="name">ACTwebDesigns</li><li class="speech">arghh</li></ul>
        )

)

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:5)

好了,因为你已经使用了jQuery,你可以使用each函数:

$.ajax({ 
        type: 'POST', url: './', data: 'token=' + token + '&re=8', cache: false, timeout: 5000,
        success: function(html){ 
            auth(html);
            var JSON_array = eval(html);
            $.each(JSON_array, function(index, data) {
                $('someelement').append(data.contents);
            });
        }                           
    });

答案 1 :(得分:2)

您可以将JSON指定为返回类型...

,而不是评估HTML

使用$.each

时,迭代很容易
$.ajax({
    type: "POST",
    data: ...,
    url: url,
    dataType: "json",
    success: function(data) {
        $.each(data, function(i, item){
            // do something with every item in data
            // you can reference items in data via
            // data.fieldName
        });
    }
});

for ... in循环并不难:

$.ajax({
    ...,
    dataType: "json",
    success: function(data) {
        var fields = data.fieldName;
        var value;
        for (value in fields) {
            // do something with value
        }
    }
});

答案 2 :(得分:1)

只是为了澄清,因为我已经阅读了许多有用的提示和答案,只有这个对我有用:

$.ajax({ 
    type: 'POST', url: './', data: 'token=' + token + '&re=8', cache: false, timeout: 5000, datatype: 'json', 
    success: function(html){ 
        auth(html);
        var JSON_array = eval(html);
        $.each(JSON_array, function(index, data) {
            var talk_to = JSON_array.username;
            var contents_to_update = JSON_array.contents;
        });
    }                           
});

这使得工作:

1)使用eval。 2)数据类型:'json' 3)使用jquery的$ .each函数