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 :

Passage d'un tableau avec $.get()


Sujet :

jQuery

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 21
    Points : 11
    Points
    11
    Par défaut Passage d'un tableau avec $.get()
    Bonjour à tous, je suis actuellement en train de travailler sur un projet de stage, et je rencontre un petit souci.
    J'ai une partie JavaScript (avec JQuery) qui fait appel à $.get() pour appeler un script PHP qui est censé modifier une base de donnée (MySQL).
    Le problème c'est que je souhaite passer un tableau de valeurs... Et même avec des tests basiques, ça bloque...

    Du côté JavaScript :
    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
    function saveInfos() {
     
            var descriptionArray = new Array;
            descriptionArray[0] = null;
     
            descriptionArray[1] = $("#description1").val();
            descriptionArray[2] = $("#description2").val();
            descriptionArray[3] = $("#description3").val();
     
            $("#form").submit(function( event ) {
      console.log( $( this ).serializeArray() );
      event.preventDefault();
    });
     
            $.get( "http://localhost/glpi/plugins/monplugin/Smarty/templates/saveInfos.php?numTask="+(numTask-1)+"descriptionArray="+descriptionArray, function(data) {
            alert(data);
         });
    }
    Du côté PHP :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if(isset($_GET["numTask"]))
        $numTask = $_GET["numTask"];
    echo $numTask;
    if(isset($_GET["descriptionArray"])){
        $descriptionArray = unserialize($_GET["descriptionArray"]);
    }
    for($i=1; $i<$numTask; $i++) {
        echo $descriptionArray[$i];
        echo "\n";
    }

    Quand je rentre les valeurs "un", "deux", "trois", respectivement aux indices 1, 2 et 3 de mon tableau, et que je test le ficheir PHP, je tombe sur cette erreur:

    Nom : Capture.PNG
Affichages : 92
Taille : 38,9 Ko

    Après quelques recherches sur le net, j'ai trouvé .serialize() pour le JS (JQuery) et unserialize du côte PHP, mais ça ne fonctionne pas, dans la console du navigateur je retrouve une erreur si j'ajoute cette ligne à au JS:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var tab = descriptionArray.serialize();
    Erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Uncaught TypeError: undefined is not a function
    Si vous pouviez m'aider, c'est peut être tout bête mais ça commence à me ******!
    Merci de votre patience, bonne journée.

    PS: Si un admin pouvait déplacer mon message dans la partie "Language", ça serait plus approprié je pense... Désolé du dérangement.

  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 638
    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 638
    Points : 66 668
    Points
    66 668
    Billets dans le blog
    1
    Par défaut
    $.get() accepte 4 paramètres

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $.get( url [, data ] [, success ] [, dataType ] )
    passe un json array en paramètre data
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    mydata= {"numTask" : numTask-1, "descriptionArray" :  descriptionArray };
    $.get( "http://localhost/glpi/plugins/monplugin/Smarty/templates/saveInfos.php, mydata , function(data) {
            alert(data);
         });




    https://api.jquery.com/jquery.get/
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2015
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2015
    Messages : 107
    Points : 139
    Points
    139
    Par défaut
    Bonjour,

    Je ne connais pas $.get (ou plutôt je ne l'ai jamais utilisé), mais d'après la doc JQuery, si tu veux passer tes paramètres à $.get(), c'est de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $.get( "test.php", { name: "John", time: "2pm" } );
    et pour un tableau, qui correspondra encore mieux à ton cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $.get( "test.php", { "choices[]": ["Jon", "Susan"] } );
    En espérant que cela t'aide.

    Darkauron
    Darkauron

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    Un "&" manquant dans l'url.. J'avoue j'ai un peu honte là...

    Malheureusement, une erreur persiste... J'ai modifié un peu mon code :

    JavaScript :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function saveInfos() {
     
            var descriptionArray = new Array;
            descriptionArray[0] = null;
     
            descriptionArray[1] = $("#description1").val();
            descriptionArray[2] = $("#description2").val();
            descriptionArray[3] = $("#description3").val();
     
     
            $.get( "http://localhost/glpi/plugins/monplugin/Smarty/templates/saveInfos.php?numTask="+numTask+"&descriptionArray="+descriptionArray, function(data) {
            alert(data);
         });
    }
    Côté PHP:

    Code php : 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
    if(isset($_GET["numTask"]))
        $numTask = $_GET["numTask"];
     
    echo "Nombre de taches : ".$numTask."<br/>";
     
     
    if(isset($_GET["descriptionArray"]))
    {
        $descriptionArray = $_GET["descriptionArray"];
    }
     
    echo $descriptionArray[1];
    echo $descriptionArray[2];
    echo $descriptionArray[3];
    echo $descriptionArray[4];
    echo $descriptionArray[5];

    Ce code m'affiche :

    http://www.luckystrike.fr/PROJECTS/GLPI/Capture2.PNG

    Mais ce code :

    Code php : 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
    if(isset($_GET["numTask"]))
        $numTask = $_GET["numTask"];
     
    echo "Nombre de taches : ".$numTask."<br/>";
     
     
    if(isset($_GET["descriptionArray"]))
    {
        $descriptionArray = $_GET["descriptionArray"];
    }
     
     
    echo "Mon tableau : \n";
    $max = sizeof($descriptionArray);
    for ($i=1; $i<$max; $i++) {
        echo $i;
        echo $i." : ".$descriptionArray[$i]."\n";
    }

    ne m'affiche rien.

    Chaque case de mon tableau contient une lettre, y'a-t'il un moyen de remettre chaque mot dans une case pour faciliter l'exploitation de mon tableau ?

    Cordialement.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    Mon message est parti trop vite, pas eu le temps de lire vos réponses, merci je pense qu'en passant un tableau au format JSON ça devrait fonctionner.
    Je teste et je vous tiens au courant.

    Merci de votre rapidité.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    On dirait que l’URL ne fonctionne plus.

    Ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            var mydata = {"numTask" : numTask-1, "descriptionArray" :  descriptionArray };
            $.get("http://localhost/glpi/plugins/monplugin/Smarty/templates/saveInfos.php", mydata, function(data) {
            alert(data);
         });
    me renvoi vers "http://localhost/glpi/front/alert('test')?" qui n'existe pas bien entendu.

    Une idée ?

  7. #7
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2015
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2015
    Messages : 107
    Points : 139
    Points
    139
    Par défaut
    Je sais pas si c'est lié, et je pense que non, mais pour la déclaration de ton tableau dans la fonction $.get, tu devrais ajouter des [] comme indiqué dans la doc JQuery :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var mydata = {"numTask" : numTask-1, "descriptionArray[]" :  descriptionArray };
    A vérifier.

    Darkauron
    Darkauron

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    Même chose en an ajoutant [], je comprend pas cette redirection...
    Où va-t'il chercher un chemin pareil ?

  9. #9
    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 638
    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 638
    Points : 66 668
    Points
    66 668
    Billets dans le blog
    1
    Par défaut
    il est lancé ou ce get ? sur une balise a ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  10. #10
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    Dans un fichier .tpl, dans cette fonction précisement :

    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
    function saveInfos() {
     
            var descriptionArray = new Array;
            descriptionArray[0] = null;
     
            descriptionArray[1] = $("#description1").val();
            descriptionArray[2] = $("#description2").val();
            descriptionArray[3] = $("#description3").val();
     
            var mydata = {"numTask" : numTask-1, "descriptionArray[]" :  descriptionArray };
     
            $.get("http://localhost/glpi/plugins/monplugin/Smarty/templates/saveInfos.php", mydata, function(data) {
       alert(data);
    });
    }
    Cette fonction est appelée dans un onclick d'un input de type submit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="submit" onclick="saveInfos()" value="Enregistrer">

  11. #11
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    Je vais aller manger, j'ai besoin d'une pause !
    Si vous avez des idées, n'hésitez pas je vais continuer à réfléchir et je testerai ça dès que reviens au bureau (14h).

    Encore merci de votre patience.

  12. #12
    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 638
    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 638
    Points : 66 668
    Points
    66 668
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="submit" onclick="saveInfos()" value="Enregistrer">
    normal un submit recharge la page en pointant sur la page action de ton formulaire ...

    il te faut inhiber le comportement par défaut du bouton submit, soit par un preventDefault, soit en modifiant le bouton en input type button
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  13. #13
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    Ça fonctionne, j'aurais du y penser mais j'ai même pas pensé à regarder à ça, merci beaucoup en tout cas pour votre patience et votre rapidité!

    Sujet résolu.

    Cordialement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 01/06/2015, 14h48
  2. alterner les couleurs dans un tableau avec xsl
    Par Eithelgul dans le forum XSL/XSLT/XPATH
    Réponses: 14
    Dernier message: 03/05/2015, 23h29
  3. interprétation tableau avec passage par reference
    Par supertotal dans le forum Langage
    Réponses: 1
    Dernier message: 20/06/2013, 11h59
  4. Passer un tableau avec GET
    Par arthuro45 dans le forum Général JavaScript
    Réponses: 21
    Dernier message: 31/03/2011, 15h49
  5. [AJAX] Passage de 2 paramètres avec la méthode GET
    Par furth dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 01/06/2007, 16h18

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