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:
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.
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ê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ê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êt</span></td></tr></tbody></table></div>
Sur cette page, j'ai un formulaire avec un bouton dont levenement onclick appelle une fonction go() :
le fichier ajax_3 contient:
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); }
moins les lignes commentées
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." !";
MAis le résultat n'est pas celui attendu:
Pour ceux qui ne voudrait pas lire : "Trying to get property of non-object in line 3"
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 !
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()
ou dans ajax_3;
Code : Sélectionner tout - Visualiser dans une fenêtre à part xhr.send("personne="+personne.Nom);
c'est un échec.
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'];
Pouvez vous m'aider?
Partager