цикл по массиву JSON - PullRequest
       4

цикл по массиву JSON

2 голосов
/ 27 марта 2010

Я недавно опубликовал еще один вопрос, который сразу же пользователи указали мне в правильном направлении.

$.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 ]

5 голосов
/ 27 марта 2010

Ну, так как вы уже используете jQuery, вы можете использовать функцию каждая :

$.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);
            });
        }                           
    });
2 голосов
/ 27 марта 2010

Вместо оценки HTML вы даже можете указать JSON как тип возвращаемого значения ...

Итерация проста при использовании $.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
        }
    }
});
1 голос
/ 27 марта 2010

Просто чтобы уточнить, поскольку я прочитал много полезных советов и ответов, и только этот сработал для меня:

$.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) использование функции $ .each в jquery

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...