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?