EDIT Я проверил документацию jQuery и, используя $ .ajax с указанным типом данных json, возвращает оцененный объект javascript, поэтому eval () здесь не является ответом. В любом случае, я знал, что я могу анализировать отдельные объекты JSON, но не массивы. Проблема в том, что мне нужно пройти через них.)
Я следовал синтаксису парсинга массива JSON в jQuery в букву, но по какой-то причине он не работает. Я извлекаю массив, используя $ .ajax, указал правильный тип данных и в Firebug вижу, что ответ от моего PHP-скрипта - []. Тем не менее, когда я пытаюсь использовать $ .each для перебора массива, все, что я получаю, это неопределенные значения, когда я пытаюсь console.log различных частей массива. Вот где мой PHP-скрипт создает и кодирует массив:
if(mysqli_num_rows($new_res) > 0) {
$messages = array();
while($message_data = mysqli_fetch_assoc($query_res)) {
$message = array(
'poster' => $message_data['poster'],
'message' => $message_data['message'],
'time' => $message_data['time']
);
$messages[] = $message;
}
echo json_encode($messages);
} else if(mysqli_num_rows($new_res) == 0) {
$message = array(
'poster' => '',
'message' => 'No messages!',
'time' => 1
);
echo json_encode($message);
}
И вот моя попытка разобрать его:
var logged_in = '<?php echo $logged_in; ?>';
var poster = '<?php echo $_SESSION["poster"];?>';
$.ajax({
url: 'do_chat.php5',
type: 'post',
data: ({'poster':poster,'logged_in':logged_in}),
dataType: 'json',
success: function(data) {
$.each(data, function(messageIndex, message) {
console.log(parseInt($('#chatWindow :last-child > span').html())+' '+message['time']);
if((parseInt(message['time']) > parseInt($('#chatWindow :last-child > span').html()))) {
$('#chatWindow').append('<div class="poster">'+message['poster']+'</div><div class="message"><span>'+message['time']+'</span>'+message['message']+'</div>');
}
});
}
});
Без функции $ .each я могу успешно анализировать отдельные объекты JSON, но не массив. Это мой первый выход с JSON и $ .each, и я довольно новичок в jQuery, так что будьте спокойны, если в моем коде ужасные биты!