2 votes

envoyer un tableau avec jquery ajax

J'ai ce code jquery :

        var myarr = ["aa","ss","dd"];

        $.ajax({
            url: "proces.php",
            data: "arr="+myarr,
            type: "POST",
            success: function () {
                alert("data is send");
            }
        });

Je vois le message data is send mais en proces.php J'ai le code suivant

$str = '';
foreach ($_POST['arr'] as $k=>$v) {
    $str = $str.$v;
}

$hand = fopen("t.txt","w+");
fwrite($hand,$str);

et dans le fichier t.txt rien n'est écrit, dites-moi où je me trompe ?

5voto

techfoobar Points 33807

Vous pouvez l'envoyer en tant que :

$.ajax({
    url: "proces.php",

    data: 'arr=' + JSON.stringify({arr: myarr}),

    type: "POST",
    success: function () {
        alert("data is send");
    }
});

Et du côté du serveur, vous pouvez le lire comme :

$arr = jsondecode($_POST['arr']);

foreach($x in $arr->arr) {
   // stuff
}

3voto

Quentin Points 325526

Si vous transformez un tableau en chaîne et l'ajoutez à arr= alors vous obtenez :

arr=1,2,3

mais la façon standard d'envoyer un tableau de données sur HTTP est :

arr=1&arr=2&arr=3

PHP a une exigence supplémentaire. Il s'attend à ce que le nom se termine par []

arr[]=1&arr[]=2&arr[]=3

N'essayez pas de construire vous-même les données codées par formulaire. Laissez jQuery le faire. Par défaut, il génère des noms de clés de style PHP pour les tableaux et s'occupe de tout échappement nécessaire en raison des caractères qui ont une signification spéciale dans les URI (par exemple, si vos données comprennent un caractère & ).

Changez :

data: "arr="+myarr,

a

data:{ "arr": myarr },

Puis, en PHP $_POST['arr'] sera un tableau.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X