Comment retourner un tableau à partir d'un appel AJAX?
Je cherche une meilleure solution pour passer un appel AJAX avec jQuery, le fichier PHP retournant un tableau et le faisant sortir côté client]). en tant que tableau Javascript. Voici ce que je faisais ceci:
Fichier PHP (Example.php):
<?php
$id_numbers = array('NES-ZL','NES-AL','SNS-ZL');
for ($i=0; $i<count($the_array); $i++){
echo $id_numbers[$i];
echo '|';
}
?>
Fichier JS:
id_numbers = new Array();
$.ajax({
url:"Example.php",
type:"POST",
success:function(msg){
id_numbers = msg.split('|');
}
});
Ma méthode actuelle est un peu trop compliquée à mon goût.
Ce que j'aimerais faire, c'est pouvoir
return $id_numbers;
du côté PHP et traduisez-le directement en un tableau Javascript après l'appel AJAX.
Des idées, n'importe qui?
Utilisez JSON pour transférer des types de données (tableaux et objets) entre le client et le serveur.
En PHP:
En JavaScript:
PHP:
echo json_encode($id_numbers);
JavaScript:
id_numbers = JSON.parse(msg);
Comme Wolfgang l’a mentionné, vous pouvez attribuer un quatrième paramètre à jQuery afin de décoder automatiquement le code JSON pour vous.
id_numbers = new Array();
$.ajax({
url:"Example.php",
type:"POST",
success:function(msg){
id_numbers = msg;
},
dataType:"json"
});
Jetez un oeil à json_encode () en PHP. Vous pouvez obtenir que $ .ajax le reconnaisse avec le paramètre dataType: "json".
@ Xeon06, Nice mais juste comme un FYI pour ceux qui lisent ce fil et ont essayé comme moi ... lors du retour du tableau de php => json_encode($theArray)
. se transforme en une chaîne qui pour moi n’est pas facile à manipuler, surtout pour les utilisateurs de soft js comme moi.
Dans js, vous essayez d’obtenir les valeurs du tableau et/ou les clés du tableau en utilisant JSON.parse comme dans var jsArray = JSON.parse(data)
où les données sont des tableaux renvoyés par php. la chaîne encodée en json est convertie en objet js qui peut maintenant être manipulé facilement.
par exemple. foo = {un: 1, deux: 2, trois: 3} - obtenu après JSON.parse
for (key in foo){ console.log("foo["+ key +"]="+ foo[key]) }
- imprime sur votre console firebug. le tour est joué!
Jettes un coup d'oeil à json_encode
_ (http://php.net/manual/en/function.json-encode.php). Il est disponible à partir de PHP 5.2. Utilisez le paramètre dataType: 'json'
le faire analyser pour vous. Vous aurez alors l'objet comme premier argument de succès. Pour plus d'informations, consultez la documentation de jQuery: http://api.jquery.com/jQuery.ajax/
Php a une fonction super sexy pour cela, il suffit de lui passer le tableau:
$json = json_encode($var);
$.ajax({
url:"Example.php",
type:"POST",
dataType : "json",
success:function(msg){
console.info(msg);
}
});
simples :)