envoyer un objet de php vers ajax

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : envoyer un objet de php vers ajax

par sadeq » 15 sept. 2006, 11:41

Cyrano +1 :pouce:
Mais notre ami parle de transmission d'objet (données et méthodes) et non simplement d'une source de données.

par Cyrano » 15 sept. 2006, 10:59

Peut être la clé de voute est de savoir si on peut désérialiser l'objet envoyé côté javascript (et je pense que c'est possible si tu envois aussi à javascript la classe de l'objet sérialisé) :roll:
C'est tout à fait possible et le script est même disponible, voir cet article sur aidejavascript.com : à noter, c'est précisément ce script qui est utilisé dans le tuto de la FAQ sur les listes déroulantes liées PHP+JavaScript de la FAQ

L'idée consiste à prendre un tableau sérialisé en PHP et à le transformer en tableau JavaScript. :)

par sadeq » 15 sept. 2006, 10:37

Ce qui est sûr c'est que tu dois envoyer un objet sérialisé au format javascript avec (et c'est obligatoire) la classe pour le réanimer.

Peut être la clé de voute est de savoir si on peut désérialiser l'objet envoyé côté javascript (et je pense que c'est possible si tu envois aussi à javascript la classe de l'objet sérialisé) :roll:

Bien sûr tu dois envoyer tout ça sous forme de chaîne à Ajax qui doit faire un eval() pour exécuter à chaud le code de désérialisation

par Cyrano » 15 sept. 2006, 08:17

Le problème global : tu veux envoyer depuis le serveur un objet vers le client : or soit tu envoies un objet JavaScript soit tu envoies un objet PHP. Dans les deux cas ça va coincer puisque le JavaScript est interprété coté client, donc le serveur ne pourra pas construire un objet en JavaScript, et si tu envoies un objet PHP, le client ne pourra rien en faire parce qu'il ne saura pas l'interpréter.

Donc personnellement, j'ai un peu de mal à comprendre ce que tu veux faire au juste... :-k

par ben » 15 sept. 2006, 08:13

Saut,

je sais que pour un tableau ça marche, par exemple :
$aRetour = "['var1', 'var2', 'var3']";
va fonctionner sans problème, mais ma question portait sur le fait de renvoyer un objet sans passer par un tableau.

Par contre merci pour ta réponse, car tu m'as mis sur une bonne piste, celle du tableau d'objets, genre si je fais :
$aRetour = "['var1', {a:1}, 'var3']";
La case [1] de mon tableau sera bien de type Object, ce qui ouvre déjà plus de possibilités, mais je trouve quand meme bizarre le fait de ne pouvoir envoyer un Object sans passer par une case de tableau.

par Ryle » 14 sept. 2006, 22:53

Vi mais c'est du php, pas du javascript que tu évalues dans ce cas et tu ne peux pas utiliser de php dans une page déjà chargée.
Si tu veux passer un objet ou un tableau en ajax pour l'utiliser côté client, il faut que ce soit un tableau javascript. A toi de renvoyer le code adéquat dans ton script php :)

par ben » 14 sept. 2006, 20:47

Désolé, je viens de voir que je ne m'étais pas connecté, j'ai poste en tant qu'invité...

Bref, j'avais déjà tenté de faire un eval de la chaine :
$oRetour = "{ maVar1:".$maVar1.", maVar2:".$maVar2." }"; 
mais ca ne passe malheureusement pas.

Si qqn à une solution je suis preneur...

par Ryle » 14 sept. 2006, 09:50

Tu pourrais éventuellement retourner du code javascript (sous forme de chaine texte) dont tu n'aurais qu'à faire un eval() pour pouvoir l'exploiter directement ?

A toi ensuite de prévoir le code js pour que celui-ci génère un objet renseigné lorsqu'il sera evalué :)

envoyer un objet de php vers ajax

par Invité » 14 sept. 2006, 08:28

Salut,

je me demandais s'il était possible, lors d'un appel ajax, que le traitement renvoie un objet interprétable en javascript ? Ca serait quand meme le bonheur...

Par exemple que ma fonction php retour un truc du type :
$oRetour = "{ maVar1:".$maVar1.", maVar2:".$maVar2." }";
est en en js je puis faire un truc du type :
var oRetour = {};
oRetour = xmlhhtp.responseText;
le problème c'est que bien entendu je recois le tout sous un type String et pas Objet, le but étant de ne pas devoir faire une fonction de désérialisation bien entendu, ni dez passer par un split...

Enfin voila c'était la question du matin avant d'aller travailler...

Mertci d'avance pour vos réponses