Превращение данных после запроса в функцию .each () - PullRequest
0 голосов
/ 21 января 2012

Я использую этот код

$.post("assets/scripts/chat/load_convos.php",{}, function(data) {
$.each(data, function(index, value) { 
  alert(value);
});

, и возврат data равен [57,49], но он просто ничего не делает ... Если я заменю data простопосле $.each( с [57,49] он работает, но не с data на своем месте.

Я не лучший в Javascript, поэтому всяческая помощь очень ценится.

Ответы [ 3 ]

1 голос
/ 21 января 2012

Что вы подразумеваете под "data is [57,49]"?

Я предполагаю, что вы ожидаете (JSON) -объект, но вы просто получаете строку. Мое второе предположение состоит в том, что jQuery неправильно интерпретирует результат и не идентифицирует возвращение как JSON-String, а следовательно, не подразумевает JSON.parse it.

Проверьте типы содержимого запроса. Попробуйте вызвать data = JSON.parse(data); вручную перед вызовом цикла each. На самом деле jQuery должен иметь возможность идентифицировать эту строку как сам результат JSON, поэтому мне также интересно, какую версию jQuery вы используете.

Еще один выстрел, который вы можете сделать, это позвонить .getJSON() вместо .post() напрямую.

0 голосов
/ 21 января 2012

Укажите json в качестве типа данных.

Взято из документации jquery.post

Example: Posts to the test.php page and gets contents which has been 
         returned in json format 
(<;?php echo json_encode(array("name"=>"John","time"=>"2pm")); ?>).
$.post("test.php", { "func": "getNameAndTime" },
    function(data){
        console.log(data.name); // John
        console.log(data.time); //  2pm
    }, "json");
0 голосов
/ 21 января 2012

Вы можете использовать JSON.parse или eval('('+response+')');, но, вероятно, решение состоит в том, чтобы указать jQuery или используемой вами библиотеке, что ответом является JSON.

Кстати, не во всех браузерах есть объект JSON, поэтому, если ваша библиотека не предоставляет его, вам придется использовать решение eval.

...