EDITAR he comprobado la documentación de jQuery y el uso de $ .ajax con el tipo de datos JSON especificado devuelve un objeto evaluado Javascript, por lo eval() no es la respuesta aquí. Lo sabía de todos modos, ya que puedo analizar objetos JSON individuales, pero no arreglos. El problema es $ .each-ing mi camino a través de ellos :)Cómo analizar matriz JSON en jQuery?
He seguido la sintaxis para analizar una matriz JSON en jQuery a la letra, pero no funciona por alguna razón. Estoy buscando la matriz usando $ .ajax, he especificado el tipo de datos correcto, y en Firebug puedo ver que la respuesta de mi script PHP es []. Sin embargo, cuando trato de usar $ each para iterar a través de la matriz, lo único que consigue es valores indefinidos cuando intento console.log varias partes de la matriz. Aquí es donde mi script php hace y codifica la matriz:
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);
}
Y aquí es mi intento de analizarlo:
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>');
}
});
}
});
Sin la función $ .Cada soy capaz de analizar correctamente los objetos individuales JSON , pero no una matriz. Esta es mi primera salida con JSON y $ each, y yo soy bastante nuevo en jQuery, por lo que ir fácil si mi código tiene los bits feos!
¿Se las arregló para encontrar una solución? Si es así, sugiero que seleccione una respuesta: p –
aún no lo hice, no. Edité pero no obtuve más respuestas. El problema yace en la forma en que PHP codifica el objeto JSON o con la sintaxis de $ .each. Yo consueloRegistramos los datos de respuesta, y luego eval() - ed it y consola lo registraron y recibo lo mismo, por lo que eval no fue la respuesta. – user97410