JeuWeb - Crée ton jeu par navigateur
[Résolu][Ajax] Transmission des variables de PHP vers Javascript - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Résolu][Ajax] Transmission des variables de PHP vers Javascript (/showthread.php?tid=2456)

Pages : 1 2 3


[Résolu][Ajax] Transmission des variables de PHP vers Javascript - OncleJames - 21-02-2008

Bonjour,

J'ai 'réalisé' un petit moteur Ajax, qui marche pas trop mal sur les premiers test, mais seulement je fait face depuis quelques jours à un petit problème.

Grâce à ma fonction Ajax, je lis un fichier php, quand on ne doit retourner qu'une seule variable sa marche impeccable, mais quand il est question de retourner 3-4 variables, je ne peux plus les récupérer.

Fichier php :
Code PHP :
<?php 
.. Traitement ...

$var['entry1'] = "Test1" ;
$var['entry2'] = "Test2" ;
$var['entry3'] = "Test3" ;

return
$var;


Dans la fonction Javascript, je réalise la récupération normale d'ajax à l'aide de xhr2.responseText .
xhr2 est mon objet

J'essaye d'accéder aux données php par cette méthode ( qui ne marche pas )

Code PHP :
<?php 
xhr2
.responseText.entry1
xhr2
.responseText.entry2
..

J'espère avoir expliqué assez précisément le problème, mes connaissances en javascript/ajax ont quelques ( beaucoup ) de failles, mais alors la je sèche complètement.


Merci d'avance

OncleJames


RE: Transmission des variables PHP -> JS ( Ajax ) - barst - 21-02-2008

et quel était le code pour 1 paramètres, ca me permettrait d evoir la différence STP.


RE: Transmission des variables PHP -> JS ( Ajax ) - OncleJames - 21-02-2008

Je n'utilisai seulement que :

Code PHP :
<?php 
xhr2
.responseText

Et j'avais le retour de la fonction


RE: Transmission des variables PHP -> JS ( Ajax ) - gobes - 21-02-2008

A mon avis, ton souci est du même type que pour passer des variables C à un programme VB. En gros, les tableaux et les variables, ne sont pas traités ni créés de la même façon selon le langage (y'a un sens de passage et d'ordonnancement dans la mémoire je crois... chépu). Donc pour passer un tableau d'un langage à un autre, tu peux t'accrocher XD

Tu pourrais tenter les variables de session... ou va voir ici:
http://www.phpcs.com/codes/TRANSFORMER-TABLEAU-PHP-TABLEAU-JAVASCRIPT_38096.aspx

J'espère que tu trouveras ton bonheur Wink


RE: Transmission des variables PHP -> JS ( Ajax ) - barst - 21-02-2008

A mon avis si tu ne veux pas apsser en XML et rester au format text avec Ajax tu vas devoir transformer ton tableau de variable en text avec la fonction implode

du coup tu pourras toujours récupérer côté javascript le retour dans xhr2.responseText mais tu devras parser ce champ pour récupérer tes variables unes à unes


RE: Transmission des variables PHP -> JS ( Ajax ) - MaXimA - 21-02-2008

au pire j'ai un autre maniere quej 'avait déjà utilisé


tu genre dans ton fichier php un truc du genre:
Code PHP :
<?php 
entre1
= "teste";
entre2 = "";
etc...
(un simple echo...^^)

puis avec ton object ajax tu fait un
Code PHP :
<?php 
eval(xhr2.responseText );

Cela permettra de definir les variable entre1 et entre2 en javascript sur ta premiere page

(j'espere que tu m'as compris :heuuuSmile


RE: Transmission des variables PHP -> JS ( Ajax ) - gobes - 21-02-2008

barst a écrit :A mon avis si tu ne veux pas apsser en XML et rester au format text avec Ajax tu vas devoir transformer ton tableau de variable en text avec la fonction implode

du coup tu pourras toujours récupérer côté javascript le retour dans xhr2.responseText mais tu devras parser ce champ pour récupérer tes variables unes à unes

Remarque, le X de AJAX, ça veut dire XML; mais le coup du implode est pas mal aussi.


RE: Transmission des variables PHP -> JS ( Ajax ) - OncleJames - 21-02-2008

Je suis passé par l'implode,qui marche très bien, seulement quand je vais avoir besoin de passer plus de 20 données, sa va être délicat :hahahaha:


RE: Transmission des variables PHP -> JS ( Ajax ) - naholyr - 22-02-2008

perso j'utilise la méthode de MaXiMa mais avec un détail supplémentaire : une fonction "php2js" maison.

1. Je crée mon résultat PHP
2. Je renvoie php2js($resultat)
3. Je fais un eval(xhr.responseText)
4. Le résultat est un objet strictement équivalent à ce que j'avais côté PHP Smile

Exemple :
Code :
// 1.
$resultat = new Objet;
$resultat->nom = 'youhou';
$resultat->data = array('abc', 'def');
$resultat->i = 24;

// 2.
echo php2js($resultat);

// 3.
var res = eval('return ' + xhr.responseText);

// 4.
alert(res.nom); // "youhou"
alert(res.data[1]); // "def"

La fonction php2js n'est pas bien méchante, quelque chose de ce genre convient parfaitement :
Code PHP :
<?php 
function php2js ($var) {
switch (
true) {

// Tableau
case is_array($var):
if (!
count($var)) {
// Tableau vide
$res = '[]';
} elseif (
array_keys($var) === range(0, count($var)-1)) {
// Tableau simple
$res = '[' . implode(',', array_map('php2js', $var)) . ']';
} else {
// Tableau associatif non vide
$res = '{';
foreach (
$var as $key => $val) {
$res .= '"' . addslashes($key) . '":' . php2js($val) . ',';
}
$res = substr($res, 0, -1) . '}';
}
return
$res;

// Booléen
case is_bool($var):
return
$var ? 'true' : 'false';

// Nombre
case is_int($var):
case
is_integer($var):
case
is_double($var):
case
is_float($var):
return
strval($var);

// Chaine de caractères
case is_string($var):
return
'"' . addslashes($var) . '"';

// Objet
case is_object($var):
$vars = get_object_vars($var);
if (!
count($vars)) {
return
'{}';
} else {
return
php2js($vars);
}

// NULL
case is_null($var):
return
'null';

// Autre ?
default:
return
php2js(strval($var));

}
}



RE: Transmission des variables PHP -> JS ( Ajax ) - OncleJames - 22-02-2008

Je vais essayer, elle est en effet pas très compliqué et peu être très pratique, merci .