Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > jQuery
jQuery Forum d'entraide sur le framework jQuery. Avant de poster : Tutoriels jQuery, FAQ jQuery, Tous les tutoriels JavaScript, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/07/2011, 15h03   #1
Invité de passage
 
Inscription : janvier 2011
Messages : 7
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 7
Points : 3
Points : 3
Par défaut Peut-on envoyer un objet Json complexe au serveur ?

Bonjour à tous, désolé de recréer un topic alors que je viens de poster dans un autre mais je viens de voir que son auteur l'avait passé en Resolu (peu de chance donc d'avoir quelqu'un qui le lise !)

J'essaie tant bien que mal de faire passer un objet Json avec Jquery vers mon serveur php.

J'ai donc dans mon fichier javascript :
Code :
1
2
3
4
5
6
7
 
    	$.getJSON("http://url/test.php",  // le fichier qui recevra la requête
    			{"lapin":{"tomate":"farcie","chocolat":"chaud"},"couleur":"bleu"}, 
    		    function(data){   
    		alert(data.message1);
 
    	}




Et quand je tente de lire les données sur le serveur voilà ce qui se passe :
Code :
1
2
$chaine=$_GET['couleur'];
$reponse['message1'] = $chaine;
bleu est bien renvoyé dans ce cas, tout va bien

mais

Code :
1
2
$chaine=json_decode($_GET['lapin']);
$reponse['message1'] = $chaine->tomate;
null est renvoyé au lieu de farcie.

Pourtant, si je ne passe plus par javascript, en ecrivant directement la chaine sur le fichier php
Code :
1
2
3
$chaine='{"lapin":{"tomate":"farcie","chocolat":"chaud"},"couleur":"bleu"}';
$toto=json_decode($chaine);
echo $toto->lapin->tomate;
la j'ai bien "farcie" qui s'affiche.

Je suis donc un peu perdu, si quelqu'un pouvait m'aider, merci !
drooss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 15h08   #2
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 019
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

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

Informations forums :
Inscription : mars 2002
Messages : 30 019
Points : 45 114
Points : 45 114
c'est plutot un souci php non ?
Code :
1
2
3
 $chaine=json_decode('{"lapin":{"tomate":"farcie","chocolat":"chaud"},"couleur":"bleu"}');
 
 echo $chaine->lapin->tomate;
__________________
Ma page 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


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 15h14   #3
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 807
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

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

Informations forums :
Inscription : juin 2008
Messages : 13 807
Points : 35 803
Points : 35 803
Attention, getJSON signifie que tu t'attends à recevoir un format JSON, certainement pas que tu en envoies !
Même si tu passes tes paramètres sous forme d'objets JSON, ils sont transformés par jQuery avant l'envoi au serveur :
Citation:
Envoyé par Doc jQuery
Data that is sent to the server is appended to the URL as a query string. If the value of the data parameter is an object (map), it is converted to a string and url-encoded before it is appended to the URL.
Ceci dit, rien ne t'empêche de créer une chaine correspondant à un format JSON pour l'envoyer au serveur et qu'elle puisse être traitée avec json_decode.
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 15h14   #4
Invité de passage
 
Inscription : janvier 2011
Messages : 7
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 7
Points : 3
Points : 3
Je pense pas, puisque
Code :
1
2
3
$chaine=json_decode('{"lapin":{"tomate":"farcie","chocolat":"chaud"},"couleur":"bleu"}');
 
 echo $chaine->lapin->tomate;
me renvoie bien "farcie"

alors que
Code :
1
2
$chaine=json_decode($_GET['lapin']);
$reponse['message1'] = $chaine->tomate;
me renvoie null

Jquery n'envoie pas vraiment la bonne chaine !
drooss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 15h17   #5
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 807
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

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

Informations forums :
Inscription : juin 2008
Messages : 13 807
Points : 35 803
Points : 35 803
Citation:
Envoyé par drooss
Jquery n'envoie pas vraiment la bonne chaine !
Si, telle que spécifiée dans la doc, ce n'est juste pas celle que tu crois
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 15h18   #6
Invité de passage
 
Inscription : janvier 2011
Messages : 7
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 7
Points : 3
Points : 3
J'avais lu dans un tuto qu'on recevait du Json avec cette methode, mais qu'on envoyait egalement.
je vais donc essayer
Code :
1
2
3
4
5
6
	$.getJSON("http://192.168.0.44:10590/test.php",  // le fichier qui recevera la requête
    			{"lapin":'{"tomate":"farcie","chocolat":"chaud"}',"couleur":"bleu"}, 
    		    function(data){   
    		alert(data.message1);
    		
    	}
En esperant que ca fonctionne, merci !
drooss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 15h24   #7
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 019
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

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

Informations forums :
Inscription : mars 2002
Messages : 30 019
Points : 45 114
Points : 45 114
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=6;IE=7;IE=8; IE=9"  />
<script src="Scripts/jquery-1.4.2.min.js" type="text/javascript"></script>
 <script type="text/javascript">
    $.get("zzz1.php",  // le fichier qui recevra la requête
    			{"lapin":{"tomate":"farcie","chocolat":"chaud"},"couleur":"bleu"}, 
    		    function(data){   
    		alert(data);
 
    	} )
 </script>
     </head>
 <body>
 
 </body>
</html>
Code :
1
2
3
4
5
6
 <?php
 $chaine="";
echo $_GET['lapin']['tomate'];
 
 
?>
__________________
Ma page 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


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 15h29   #8
Invité de passage
 
Inscription : janvier 2011
Messages : 7
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 7
Points : 3
Points : 3
Mon essai n'a pas réussi, par contre bravo SpaceFrog ca fonctionne !

il me semblait pourtant avoir essayé de le lire comme un tableau mais j'ai du mal m y prendre.

Merci à vous, je suis grandement soulagé !
drooss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 15h31   #9
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 807
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

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

Informations forums :
Inscription : juin 2008
Messages : 13 807
Points : 35 803
Points : 35 803
Citation:
J'avais lu dans un tuto qu'on recevait du Json avec cette methode, mais qu'on envoyait egalement.
Ouais, les concepteurs de jQuery écrivent le contraire dans la doc officielle juste pour te faire une farce pendable

L'exemple proposé par Spaffy montre bien la réalité de la chose.
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 15h51   #10
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 019
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

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

Informations forums :
Inscription : mars 2002
Messages : 30 019
Points : 45 114
Points : 45 114
il semblerait que le getJSON n'envoie rien au serveur

un var_dump de $_REQUEST reste vide ???

par contre en reception:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=6;IE=7;IE=8; IE=9"  />
<script src="Scripts/jquery-1.4.2.min.js" type="text/javascript"></script>
 <script type="text/javascript">
    $.getJSON("zzz1.php",  // le fichier qui recevra la requête
    			{"lapin":{"tomate":"farcie","chocolat":"chaud"},"couleur":"bleu"}, 
    		    function(data){   
    		$.each(data, function(key,val){alert(key+"=>"+val)})
 
    	} )
 </script>
     </head>
 <body>
Code :
1
2
3
 <?php
echo '{"one":"un"}';
?>

d'ou ma tentative couronnée de succès de passer en get ..
__________________
Ma page 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


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h07.


 
 
 
 
Partenaires

Hébergement Web