82 votes

Passage d'un tableau JavaScript à PHP via jQuery $.ajax

Je souhaite manipuler un tableau JavaScript en PHP. Est-il possible de faire quelque chose comme ça ?

$.ajax({
       type: "POST",
       url: "tourFinderFunctions.php",
       data: "activitiesArray="+activities,
       success: function() {
            $("#lengthQuestion").fadeOut('slow');
       }
    });

Les activités sont un tableau unidimensionnel comme :

var activities = ['Location Zero', 'Location One', 'Location Two'];

Le script ne se termine pas lorsque j'essaie ceci... Comment puis-je le réparer ?

0 votes

149voto

Valentin Golev Points 5002
data: { activitiesArray: activities },

Voilà, c'est fait ! Vous pouvez maintenant y accéder en PHP :

<?php $myArray = $_REQUEST['activitiesArray']; ?>

10 votes

Pourquoi cette réponse était-elle si difficile à trouver ? Merci, c'est exactement ce dont j'avais besoin.

0 votes

Aussi simple qu'un hacker ! Bien joué ! Vous m'avez fait rire de moi-même :D.

12voto

jvenema Points 21499

Vous devrez coder votre tableau en JSON avant de l'envoyer, sinon vous obtiendrez des déchets à l'autre bout.

Puisque tout ce que vous envoyez est le tableau, vous pouvez simplement faire :

data: { activities: activities }

qui convertira automatiquement le tableau pour vous.

Ver aquí pour les détails.

11voto

James Wiseman Points 18347

Vous devez transformer cela en une chaîne de caractères. Vous pouvez le faire en utilisant la méthode stringify de la bibliothèque JSON2.

http://www.json.org/

http://www.json.org/js.html

Le code ressemblerait à quelque chose comme :

var myJSONText = JSON.stringify(myObject);

Alors

['Location Zero', 'Location One', 'Location Two'];

Deviendra :

"['Location Zero', 'Location One', 'Location Two']"

Vous devrez vous référer à un gourou de PHP pour savoir comment gérer cela sur le serveur. Je pense que d'autres réponses ici intime une solution.

Les données peuvent être renvoyées du serveur de manière similaire. C'est-à-dire que vous pouvez les retransformer en objet.

var myObject = JSON.parse(myJSONString);

11voto

lu1s Points 551

Je sais qu'il est peut-être trop tard pour répondre à cette question, mais cela a très bien fonctionné pour moi :

  1. Stringifier votre objet javascript (json) avec var st = JSON.stringify(your_object);

  2. Passez vos données POST en tant que "string" (peut-être en utilisant jQuery : $.post('foo.php',{data:st},function(data){... });

  3. Décoder vos données sur le traitement côté serveur : $data = json_decode($_POST['data']);

C'est tout... vous pouvez utiliser librement vos données.

Les tableaux multidimensionnels et les tableaux simples sont traités comme des tableaux normaux. Pour y accéder, il suffit de suivre la procédure normale $foo[4] .

Les tableaux associatifs (objets javsacript) sont traités comme des objets php (classes). Pour y accéder, il suffit de le faire comme les classes : $foo->bar .

1voto

Gazzer Points 1358

Utiliser la fonction JQuery Serialize

http://docs.jquery.com/Ajax/serialize

Serialize est généralement utilisé pour préparer données d'entrée utilisateur à envoyer à un serveur. Les données sérialisées sont dans un format standard qui est compatible avec presque tous les langages de programmation de programmation côté serveur et des cadres.

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