IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Passer un array js à PHP


Sujet :

jQuery

  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 17
    Points : 8
    Points
    8
    Par défaut Passer un array js à PHP
    Bonjour à tous, je rencontre un problème que je n'arrive pas à résoudre. Un var_dump($_POST) reste désespérément. Voici le code js:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <script type="text/javascript">
    var selectedValues;
     
    $("td").click(function() {
        $(this).toggleClass('selectedBox');
     
    	selectedValues = [];
        selectedValues.push(($.map($("td.selectedBox"), 
    						function(obj) {
    							return $(obj).text();
    						}
    					)));
     
        // $.post('/url/to/page', {'someKeyName': variableName}); //exemple
        $.post('handler.php', 
              {'serializedValues[]' : JSON.stringify(selectedValues)}, 
              function(data) {
                //debug 
             }
        );
    });
    </script>
    Et voici le code PHP:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
     
    var_dump($_POST);
    if(isset($_POST['serializedValues'])) {
     
                var_dump($_POST['serializedValues']);
                
            }
    ?>
    Des idées ? Merci d'avance !

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    Essaye ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_POST['serializedValues']
    quitte à faire un json_decode

  3. #3
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $.map($("td.selectedBox"), 
    	function(obj) {
    		return $(obj).text();
    	}
    )
    Le premier paramètre passé au callback de $.map() est l'indice, pas l'élément

  4. #4
    Futur Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 17
    Points : 8
    Points
    8
    Par défaut
    J'ai déjà essaye sans le '[]', pas plus de succès.

  5. #5
    Futur Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 17
    Points : 8
    Points
    8
    Par défaut
    @Bovino

    Pourtant quand je fait par exemple un console.log(selectedValues), j'obtiens bien le résultat désiré. Les valeurs qui sont dans les éléments sont bien push dans le tableau

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    J'ai édité ma réponse qui n'était pas très claire...
    Je parlais du callback de $.map().

  7. #7
    Futur Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 17
    Points : 8
    Points
    8
    Par défaut
    Vous voulez dire qu'il faudrait plutôt passer par $(this) ? Si oui, j'ai déjà essayé et ca ne me rempli pas mon Array correctement, ca me le rempli avec des ','.

  8. #8
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Arf, l'erreur vient probablement d'ailleurs : $.map() renvoie un objet jQuery, il est nécessaire de passer par .get() pour pouvoir l'utiliser comme un tableau :

  9. #9
    Futur Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 17
    Points : 8
    Points
    8
    Par défaut
    Je vais voir comment position ce .get() et je vous tiens au courant !

  10. #10
    Futur Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 17
    Points : 8
    Points
    8
    Par défaut
    Bon, sans succès, peu importe ou j'essaye de placer ce get(), j'obtiens toujours la même erreur : Uncaught TypeError: Object has no method 'get()'.

    J'ai essayer également en réécrivant la fonction map() et sans passer par le .push().

    Comment l'auriez vous fait ?

  11. #11
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Ben à vrai dire, je comprends pas trop ta manip...

    Essaye plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $.map($("td.selectedBox"), function(indice, elem){
        selectedValues.push($(elem).text());
    });

  12. #12
    Futur Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 17
    Points : 8
    Points
    8
    Par défaut
    Ce que je cherche à faire c'est :

    A chaque clique sur un élement <td> il y'a un changement de classe, puis pour chaque élement <td>, je récupère leurs valeurs que je stock dans un tableau.

    Je souhaite ensuite envoyer ce tableau à PHP pour le traiter côté serveur.

    Votre fonction ne marche pas, console.log(selectedValues) me retourne par exemple ["", ""] pour deux <td> séléctionné.

  13. #13
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Arf... effectivement, les paramètres passés au callback ne sont pas dans le même ordre avec $(...).map() et avec $.map()...

    Essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $.map($("td.selectedBox"), function(elem){
        selectedValues.push($(elem).text());
    });

  14. #14
    Futur Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 17
    Points : 8
    Points
    8
    Par défaut
    C'est exactement ce que je fais depuis le début sauf que elem je le nomme obj ^^

  15. #15
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Non, toi tu faisais le push sur le map, moi je te propose de faire le push à chaque itération.

  16. #16
    Futur Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 17
    Points : 8
    Points
    8
    Par défaut
    J'ai essayé, j'obtiens toujours le même résultat. Ce qui est bizarre c'est que par exemple avec firebug j'analyse les requêtes, mon js envoie bien un array 'serializedValues' avec les bonnes valeurs:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    serializedValues	["2 "]
    (quand je sélectionne le second td par exemple, donc c'est correct)

    Mais je n'arrive jamais à le récupérer avec mon handler.php qui me dit que c'est null

Discussions similaires

  1. Passer un array de PHP vers Flash
    Par ok07 dans le forum Flash
    Réponses: 3
    Dernier message: 18/02/2007, 10h02
  2. [Tableaux] Array et PHP
    Par kagura dans le forum Langage
    Réponses: 16
    Dernier message: 27/07/2006, 12h34
  3. [Tableaux] passer un array d'une page à une autre
    Par 18Marie dans le forum Langage
    Réponses: 5
    Dernier message: 25/06/2006, 22h42
  4. [Tableaux] array intersect php
    Par lafracas dans le forum Langage
    Réponses: 1
    Dernier message: 09/06/2006, 21h21
  5. [JSP] Problème pour passer un array comme paramètre
    Par MxPx_23 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 06/06/2006, 17h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo