EDIT J'ai vérifié la documentation jQuery et en utilisant .ajax $ avec le type de données JSON spécifié renvoie un objet javascript évalué, donc eval() n'est pas la réponse ici. Je le savais quand même, puisque je suis capable d'analyser des objets JSON simples, mais pas des tableaux. Le problème est le $ .each-mon chemin à travers eux :)Comment analyser le tableau JSON dans jQuery?
J'ai suivi la syntaxe pour analyser un tableau JSON dans jQuery à la lettre, mais cela ne fonctionne pas pour une raison quelconque. J'obtiens le tableau en utilisant $ .ajax, j'ai spécifié le type de données correct, et dans Firebug je peux voir que la réponse de mon script PHP est []. Pourtant, lorsque j'essaie d'utiliser $ .each pour itérer dans le tableau, tout ce que j'obtiens est des valeurs indéfinies lorsque j'essaie de consoler.log diverses parties du tableau. Voici où mon script php fait et code le tableau:
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);
}
Et voici ma tentative pour l'analyser:
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>');
}
});
}
});
Sans la fonction .each $ Je suis capable d'analyser avec succès simples objets JSON , mais pas un tableau. C'est ma première sortie avec JSON et $ .each, et je suis assez nouveau pour jQuery, alors allez-y doucement si mon code a des bits moche!
Avez-vous réussi à trouver une solution? Si oui, je suggère de sélectionner une réponse: p –
Je ne l'ai pas encore fait, non. J'ai édité mais n'ai pas eu d'autres réponses. Le problème réside soit dans la manière dont PHP code l'objet JSON, soit avec la syntaxe $ .each. Je console.connecté les données de réponse, puis eval() - ed et console connecté et je reçois la même chose, donc eval n'était pas la réponse. – user97410