Transfert d'info entre php et javascript

Résolu
fregolo52 Messages postés 1114 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 - 25 sept. 2008 à 16:46
fregolo52 Messages postés 1114 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 - 29 sept. 2008 à 10:07
Bonjour,

Je ne suis pas du tout un spécialiste du dév web, mais je dois apporter des évolutions à un site intranet.

Mon but est d'afficher une treeview avec des checkbox à chaque noeud.
J'ai trouvé un code sur le Net en javascript (blueshoes.org).
Les infos qui vont permettre de créer l'arbre sont dans une BDD MySQL.

Je pensais donc créer un tableau en php et le transférer dans le code javascript.
Mais j'ai l'impression d'un tableau php n'est pas un tableau javascript.
J'ai ce code de test :
<?php
$ab = array();
$ab[0] = array();
$ab[0]['caption']          = "1er noeud";
echo "<script language="javascript">alert($ab[0]['caption'] );</script>";
?>
L'alert me retourne undefine.

Est-il possible de transférer des tableaux ? Sachant que le code php et js sont dans la même page.
Est-il plus simple (plus propre) de passer par un fichier temporaire xml (je n'ai pas encore regardé ajax).

Merci

7 réponses

cs_TASIOT Messages postés 20 Date d'inscription jeudi 18 septembre 2003 Statut Membre Dernière intervention 26 septembre 2008
26 sept. 2008 à 00:07
Bonjour,

Effectivement si tu veux uniquement que transmettre une valeur à javascript, il te suffit de la concaténer dans ta chaine envoyée à ton client, comme la expliqué extraman1.

Cependant, si tu désires exploiter comme tu veux ton tableau php en javascript, le plus simple reste pour toi d'utiliser le format de notation objet de javascript (=JSON).
Pour ce faire, rien de plus simple, modifie ton fichier comme ceci :

echo '<script type="text/javascript">var monTableauJS = eval("'.addslashes(json_encode($ab)).'");
alert(monTableauJS[0]['caption']);
</script>';

Petite explication :

Depuis php5.2.0, la fonction json_encode est en native dans php. Elle permet de convertir un tableau php en une chaine de caractère que javascript comprend et interprete via la fonction "eval". Le résultat retourné par cette fonction peut alors être utilisé comme s'il s'agissait du tableau initial php (bien sur, il ne s'agit que d'une copie en javascript).
Cette notation JSON est souvent utilisé en Ajax, plutot que d'utiliser l'xml (en réponse à ta phrase : Est-il plus simple (plus propre) de passer par un fichier temporaire xml (je n'ai pas encore regardé ajax).).

En espérant avoir été clair ^^.

Roland Dufour,
http://www.multiprog.net
Visitez mon portfolio : >> http://portfolio.multiprog.net <<
3
extraman1 Messages postés 103 Date d'inscription lundi 8 septembre 2003 Statut Membre Dernière intervention 26 décembre 2009 2
26 sept. 2008 à 16:08
Salut,

Celui-là c'est bon j'ai testé :

echo "<script language="javascript">alert(" ".$ab[0]['caption']." ");</script>";

A++ extraman1
3
extraman1 Messages postés 103 Date d'inscription lundi 8 septembre 2003 Statut Membre Dernière intervention 26 décembre 2009 2
25 sept. 2008 à 19:32
Salut,

Et si tu tapes ça :

echo '<script language="javascript">alert(" '.$ab[0]['caption'].' ");</script>";

A++ extraman1
0
fregolo52 Messages postés 1114 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 4
26 sept. 2008 à 09:32
Bonjour,

Merci pour ces infos. J'ai encore un peu de mal avec la syntaxe de ce langage.

L'exemple d'extraman1 m'afficher "Array['caption']" et pas "1er noeud".

Je vais investiguer vers json.

merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_TASIOT Messages postés 20 Date d'inscription jeudi 18 septembre 2003 Statut Membre Dernière intervention 26 septembre 2008
26 sept. 2008 à 16:35
Pour info extraman1, ta seule erreur dans le précédent code était que tu avais oublié de fermer ta simple quote (=') juste après </script>.
Après mon code lui permet de gérer tout son tableau en javascript. Tout dépend après de l'utilisation exacte qu'il désire en faire. :p

Roland Dufour,
http://www.multiprog.net
Visitez mon portfolio : >> http://portfolio.multiprog.net
0
Teclis01 Messages postés 1423 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 29 décembre 2012 4
26 sept. 2008 à 17:45
tu peux passer simplement par un json_encode !

Il vaut mieux poser une question et passer pour bête que le rester toute sa vie

 Les geeks n'ont pas une case en moins ils commencent juste à compter à partir de zéro
0
fregolo52 Messages postés 1114 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 4
29 sept. 2008 à 10:07
Merci pour votre aide. Ca m'a aider aussi a mieux appréhender la syntaxe. :)


 
0
Rejoignez-nous