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

JavaScript Discussion :

Passer un json en XMLHttpRequest avec post


Sujet :

JavaScript

  1. #1
    Membre éclairé Avatar de tigunn
    Homme Profil pro
    Développeur de bug
    Inscrit en
    Janvier 2003
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de bug

    Informations forums :
    Inscription : Janvier 2003
    Messages : 608
    Points : 658
    Points
    658
    Par défaut Passer un json en XMLHttpRequest avec post
    Bonjour,
    Je voudrais passer un objet json à un script php appelé avec XMLHttpRequest.
    Détails:
    j'ai une page php qui contient un tableau de participants à une course (nom, prenom); chaque ligne contient dans une cellule un json récapitulant ses données :
    "[{"Nom":"GARAMPON"},{"Prenom":"Emmanuel"}]" //voir le code html pour le json complet
    cela donne le html suivant:
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <div><table border="1"><thead><tr><th>Nom</th><th>Prenom</th><th>Numero</th><th>Course</th><th>Temps_Arrondi</th><th>Classement</th><th>Statut</th></tr></thead><tbody><tr><td>GARAMPON</td><td>Emmanuel</td><td>43</td><td>5,8 Km</td><td>00:25:50</td><td>24</td><td><span id="xml_1" class="" style="display: none;">[{"Nom":"GARAMPON"},{"Prenom":"Emmanuel"},{"Sexe":"M"},{"Numero":"43"},{"Categorie":"V1"},{"Club":"S\/L FRANCHEVILLE AC"},{"Course":"5,8 Km"},{"Temps":"00:25:49.50"},{"Temps_Arrondi":"00:25:50"},{"Classement":"24"},{"Classement_Cat":"10"},{"Classement_Sexe":"23"},{"inter1":"00:25:49.50"},{"Tel":"0622024772"}]</span><span id="resultat_1">Pr&ecirc;t</span></td></tr><tr><td>DELCROIX</td><td>Hervé</td><td>64</td><td>5,8 Km</td><td>00:37:59</td><td>68</td><td><span id="xml_2" class="" style="display: none;">[{"Nom":"DELCROIX"},{"Prenom":"Herv\u00e9"},{"Sexe":"M"},{"Numero":"64"},{"Categorie":"V2"},{"Club":"CORBAS RUNNING"},{"Course":"5,8 Km"},{"Temps":"00:37:58.23"},{"Temps_Arrondi":"00:37:59"},{"Classement":"68"},{"Classement_Cat":"8"},{"Classement_Sexe":"42"},{"inter1":"00:37:58.23"},{"Tel":"0622024772"}]</span><span id="resultat_2">Pr&ecirc;t</span></td></tr><tr><td>FYOT</td><td>Isabelle</td><td>129</td><td>5,8 Km</td><td>00:29:53</td><td>35</td><td><span id="xml_3" class="" style="display: none;">[{"Nom":"FYOT"},{"Prenom":"Isabelle"},{"Sexe":"F"},{"Numero":"129"},{"Categorie":"V1"},{"Club":"OZON COURIR"},{"Course":"5,8 Km"},{"Temps":"00:29:52.48"},{"Temps_Arrondi":"00:29:53"},{"Classement":"35"},{"Classement_Cat":"1"},{"Classement_Sexe":"7"},{"inter1":"00:29:52.48"},{"Tel":"0622024772"}]</span><span id="resultat_3">Pr&ecirc;t</span></td></tr></tbody></table></div>
    pour résumé le json est dans un span hidden de la dernière cellule de chaque ligne; dans la même cellule un autre span affichera le resultat.

    Sur cette page, j'ai un formulaire avec un bouton dont levenement onclick appelle une fonction go() :
    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
    function go(){
    		var xhr = getXhr();
    		xhr.onreadystatechange = function(){
    			if(xhr.readyState == 4 && xhr.status == 200){
    				alert(xhr.responseText);
    			}
    		}
     
    		xhr.open("POST","http://localhost/WebSrv/test/ajax_3.php",true);
    		xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
     
    		//	ajax_3	
    		sel = document.getElementById('xml_1');//parcourir dom
    		var personne = sel.innerHTML;
     
    		xhr.send("personne="+personne);
    	}
    le fichier ajax_3 contient:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $pers_json = $_POST['personne'];
    $personne = json_decode($pers_json);
    echo "Bonjour ".$personne->Nom." !";
    moins les lignes commentées

    MAis le résultat n'est pas celui attendu:
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <br />
    <font size='1'><table class='xdebug-error xe-notice' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
    <tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Notice: Trying to get property of non-object in C:\wamp\www\WebSrv\test\ajax_3.php on line <i>6</i></th></tr>
    <tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
    <tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
    <tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.0000</td><td bgcolor='#eeeeec' align='right'>142272</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='C:\wamp\www\WebSrv\test\ajax_3.php' bgcolor='#eeeeec'>..\ajax_3.php<b>:</b>0</td></tr>
    </table></font>
    Bonjour  !
    Pour ceux qui ne voudrait pas lire : "Trying to get property of non-object in line 3"

    Alors je ne me suis pas servi de json et XMLHttpRequest depuis un baille mais que j'essaye d'exploiter le json (qui existe) dans ma fonction go()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr.send("personne="+personne.Nom);
    ou dans ajax_3;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $pers_json = $_POST['personne'];
    $personne = json_decode($pers_json);
    //$personne = json_encode($pers_json);
     
    //echo "Bonjour ".$personne->Nom." !";
    echo "Bonjour ".$pers_json->Nom." !";
    //echo $_POST['personne'];
    c'est un échec.

    Pouvez vous m'aider?
    Le monde se divise en deux: ceux qui utilisent le tag et les autres.

  2. #2
    Membre confirmé Avatar de 01001111
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2009
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2009
    Messages : 319
    Points : 509
    Points
    509
    Par défaut
    Bonjour, ça vient de la forme de ton objet json: C'est un tableau non associatif au premier niveau, contenant des objets au second
    essaie ceci

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $pers_json = $_POST['personne'];
    $personne = json_decode($pers_json);
    echo "Bonjour ".$pers_json[0]->Nom." !";

    quand tu veux vérifier la structure d'un objet décodé, tu peux faire
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo var_dump($obj);
    ça te permettra de t'apercevoir des problèmes de ce genre.
    0x4F

  3. #3
    Membre éclairé Avatar de tigunn
    Homme Profil pro
    Développeur de bug
    Inscrit en
    Janvier 2003
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de bug

    Informations forums :
    Inscription : Janvier 2003
    Messages : 608
    Points : 658
    Points
    658
    Par défaut
    Merci O!
    Ca marche!
    Le monde se divise en deux: ceux qui utilisent le tag et les autres.

  4. #4
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Quelle structure de donnée étrange
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "[{"Nom":"GARAMPON"},{"Prenom":"Emmanuel"}]"
    pourquoi pas simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "{"Nom":"GARAMPON","Prenom":"Emmanuel"}"
    tu te complique la vie pour pas grand chose.
    A+JYT

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

Discussions similaires

  1. htacces pour passer GET en même temps que POST ?
    Par kopros2 dans le forum Langage
    Réponses: 0
    Dernier message: 17/04/2015, 11h15
  2. Réponses: 6
    Dernier message: 03/07/2010, 01h41
  3. [Smarty] Un probleme pour passer des variables avec Smarty
    Par aztec dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 31/03/2008, 15h01
  4. Réponses: 2
    Dernier message: 12/09/2005, 15h33

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