web-dev-qa-db-fra.com

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?

47
k_sel

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"
});
114
Alex Turpin

Jetez un oeil à json_encode () en PHP. Vous pouvez obtenir que $ .ajax le reconnaisse avec le paramètre dataType: "json".

9
Wolfgang Stengel

@ 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é!

1
swedge218

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/

0
TimWolla

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 :)

0
Jamie Hutber