編輯我檢查了jQuery文檔,並使用$ .ajax與指定的json數據類型返回一個評估的JavaScript對象,所以eval()不是這裏的答案。無論如何,我知道,因爲我能夠解析單個JSON對象,而不是數組。問題是$。每個我的方式通過他們:)如何在jQuery中解析JSON數組?
我已經遵循的語法解析jQuery中的JSON數組到字母,但它不起作用的原因。我使用$ .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>');
}
});
}
});
沒有$。每個功能我能夠成功地解析單個JSON對象,但不是數組。這是我第一次使用JSON和$ .each進行遊戲,而且我對jQuery非常陌生,所以如果我的代碼有些醜陋,那就輕鬆一下!
您是否設法找到解決方案?如果是這樣,我建議選擇一個答案:p – 2009-10-22 23:50:21
我還沒有,沒有。我編輯但沒有進一步的答覆。問題要麼在於PHP編碼JSON對象的方式,要麼使用$ .each語法。我控制檯。記錄了響應數據,然後eval() - 編輯它和控制檯記錄它,我得到同樣的東西,所以eval不是答案。 – user97410 2009-10-23 00:19:39