Passer une variable dans du JS(json_encode())
beudet
Messages postés
128
Statut
Membre
-
beudet Messages postés 128 Statut Membre -
beudet Messages postés 128 Statut Membre -
Bonjour,
J'ai actuellement un tableau PHP qui possède des valeurs.
j'ai transforme ce tableau en JSON grace à la fonction json_encode().
Ce que j'aimerai savoir c'est comment le faire passer en parametre dans ma fonction JS et récupérer toute les valeurs dans cette fonction ?
$j=0;
$mydir = "../upload/".$prenom.".".$nom."/".$titre."/";
if ($dir = @opendir($mydir))
{
while (($file = readdir($dir)) !== false)
{
if($file != ".." && $file != ".")
{
$j = $j+1;
$filelist[] = $file; ;
}
}
closedir($dir);
}
$lien="../upload/$prenom.$nom/$titre/";
$fichier=json_encode($filelist);
<input type="image" title="lecture"value="Fenetre" src="../img/lecture.png" onclick="creer_fenetre(400,400,300,500,'<?php echo $titre; ?>','<?php echo $text; ?>','<?php echo $lien; ?>','<?php $fichier; ?>')" />
voila comment récupérer toute les valeurs dans ma fonction JS
J'ai actuellement un tableau PHP qui possède des valeurs.
j'ai transforme ce tableau en JSON grace à la fonction json_encode().
Ce que j'aimerai savoir c'est comment le faire passer en parametre dans ma fonction JS et récupérer toute les valeurs dans cette fonction ?
$j=0;
$mydir = "../upload/".$prenom.".".$nom."/".$titre."/";
if ($dir = @opendir($mydir))
{
while (($file = readdir($dir)) !== false)
{
if($file != ".." && $file != ".")
{
$j = $j+1;
$filelist[] = $file; ;
}
}
closedir($dir);
}
$lien="../upload/$prenom.$nom/$titre/";
$fichier=json_encode($filelist);
<input type="image" title="lecture"value="Fenetre" src="../img/lecture.png" onclick="creer_fenetre(400,400,300,500,'<?php echo $titre; ?>','<?php echo $text; ?>','<?php echo $lien; ?>','<?php $fichier; ?>')" />
voila comment récupérer toute les valeurs dans ma fonction JS
A voir également:
- Json_encode js
- Js arrondir - Forum Webmastering
- Copiez l'image dans un logiciel d'édition d'images ou un outil en ligne comme js paint ou pixlr e. remplissez les cases en suivant le code couleur. des cases supplémentaires vont se remplir automatiquement. que représente le dessin ? ✓ - Forum Windows
- Arrondi js ✓ - Forum Windows
- Remplir une case de tableau avec une couleur grise avec texture de pointillés ✓ - Forum Photoshop
- Reproduction d'un dessin - Forum Graphisme
15 réponses
En faisant :
function creer_fenetre(left,top,width,height,titre,texte,lien,fichier) {
alert(lien);
alert(fichier.value);
Cela me donne toujours undefined.
Peut être une erreur au niveau du passage des paramètres ?
function creer_fenetre(left,top,width,height,titre,texte,lien,fichier) {
alert(lien);
alert(fichier.value);
Cela me donne toujours undefined.
Peut être une erreur au niveau du passage des paramètres ?
Comme vous êtes sur Firefox je vais vous donner mon fameux conseil (lol), allez télécharger le module firebug de firefox, il comprend notamment un debugger de code javascript.
Si vous choisissez de le prendre je vous indiquerai la manœuvre à suivre pour vériifer vos résultats.
Sinon je pense que c'est un problème de format sinon.
En entrée de la fonction JS il faudrait remettre en forme l'objet JSON et là on pourra utiliser le value :
var myObjectJSON = eval('(' + var_fichier + ')');
var données = myObjectJSON.value;
Si vous choisissez de le prendre je vous indiquerai la manœuvre à suivre pour vériifer vos résultats.
Sinon je pense que c'est un problème de format sinon.
En entrée de la fonction JS il faudrait remettre en forme l'objet JSON et là on pourra utiliser le value :
var myObjectJSON = eval('(' + var_fichier + ')');
var données = myObjectJSON.value;
J'ai déjà ce module mais je veut bien la marche à suivre pour utiliser le debugger.
Sinon je vient de tester
function creer_fenetre(left,top,width,height,titre,texte,lien,fichier) {
alert(lien);
var myObjectJSON = eval('(' + fichier + ')');
var donnes = myObjectJSON.value;
alert(donnes);
Le premier alert s'affiche mais pas le deuxième je doit avoir une erreur de syntaxe.
Sinon je vient de tester
function creer_fenetre(left,top,width,height,titre,texte,lien,fichier) {
alert(lien);
var myObjectJSON = eval('(' + fichier + ')');
var donnes = myObjectJSON.value;
alert(donnes);
Le premier alert s'affiche mais pas le deuxième je doit avoir une erreur de syntaxe.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
function creer_fenetre(left,top,width,height,titre,texte,lien,fichier) {
alert(lien);
alert(fichier);
var myObjectJSON = eval(fichier);
var donnes = myObjectJSON.value;
alert(donnes);
Il m'affiche rien du tout. La boite d'alert s'ouvre mais elle est vide.
alert(lien);
alert(fichier);
var myObjectJSON = eval(fichier);
var donnes = myObjectJSON.value;
alert(donnes);
Il m'affiche rien du tout. La boite d'alert s'ouvre mais elle est vide.
Le problème c'est que lorsque je met le echo devant $fichier mon bouton qui fait appel à creer_fenetre() ne fonctionne plus. Même l'alert lien ne fonctionne plus.
Après un
$lien="../upload/$prenom.$nom/$titre/";
echo $filelist[0]; echo "<br />";
echo $filelist[1];
$fichier=json_encode($filelist);
echo $fichier;
cela m'affiche bien les deux noms de mes deux dossiers uploader cad :
echo $filelist[0]; echo "<br />"; ==>> 2008_A2_GIR_dupond_john.pdf
echo $filelist[1]; ==>> sitemap.pptx
echo $fichier; ==>> ["2008_A2_GIR_dupond_john.pdf","sitemap.pptx"]
Tout est bon à ce niveau normalement
$lien="../upload/$prenom.$nom/$titre/";
echo $filelist[0]; echo "<br />";
echo $filelist[1];
$fichier=json_encode($filelist);
echo $fichier;
cela m'affiche bien les deux noms de mes deux dossiers uploader cad :
echo $filelist[0]; echo "<br />"; ==>> 2008_A2_GIR_dupond_john.pdf
echo $filelist[1]; ==>> sitemap.pptx
echo $fichier; ==>> ["2008_A2_GIR_dupond_john.pdf","sitemap.pptx"]
Tout est bon à ce niveau normalement
bon remettez le echo $fichier dans l'appel, mettez tout le code de la fonction js en commentaires en ne gardant que alert(fichier);
EDIT : comment utiliser Firebug :
Cliquez sur l'insecte en bas à droite de la fenêtre du navigateur ou ouvrez firebug avec F12
Cliquez sur le sous-onglet script.
Dans le menu onglets vous avez alors Inspecter|Tous v | nom du fichier ouvert
Si le fichier ouvert est le bon laissez ainsi, sinon cliquez sur le nom et cherchez votre fichier dans la liste qui est apparue.
Vous avez à votre droite une petite fenêtre avec Espions | Pile | Points d'arrêt
Nous allons nous intéresser au premier et au dernier des onglets :
Points d'arrêt
Dans la partie gauche, au niveau de l'affichage du code du fichier, cherchez la ligne où vous souhaitez mettre un point d'arrêt (c'est à dire où arrêter le programme afin de voir l'état des variables etc du moment que vous avez choisi) et cliquez à gauche du numéro de la dite ligne. Un point rouge apparaît.
L'onglet Points d'arrêt affiche tous les points d'arrêts que vous avez placé.
Enlever point d'arrêt : cliquez sur le point rouge ou passez dans le menu points d'arrêt et appuyer sur la croix rouge à droite de l'élément désiré
Désactivé un point d'arrêt (vous gardez ainsi son emplacement) : décoché la case à gauche de l'élément
Voir où se trouve le point d'arrêt : cliquer sur le lien bleu de l'élément
Options de défilement :
Vous pouvez mettre autant de point d'arrêt que vous le souhaitez.
Pour passer au point d'arrêt suivant : F8 ou la flèche de lecture en haut à droite de firebug.
Pour faire ligne à ligne : F10 ou F11(plus détaillé) ou pas à pas sortant (dernière flèche)
Espions
Lorsque vous vous trouvez dans le code, z dans cet onglet, ensuite mettez en surbrillance les éléments dont vous voulez tester la valeur puis clic droit-> ajouter un espion. Vous aurez ainsi la valeur affichée dynamiuement et vous pourrez parcourir les différents attributs de l'élément s'il en a en cliquant sur le + à côté de l'élément
EDIT : comment utiliser Firebug :
Cliquez sur l'insecte en bas à droite de la fenêtre du navigateur ou ouvrez firebug avec F12
Cliquez sur le sous-onglet script.
Dans le menu onglets vous avez alors Inspecter|Tous v | nom du fichier ouvert
Si le fichier ouvert est le bon laissez ainsi, sinon cliquez sur le nom et cherchez votre fichier dans la liste qui est apparue.
Vous avez à votre droite une petite fenêtre avec Espions | Pile | Points d'arrêt
Nous allons nous intéresser au premier et au dernier des onglets :
Points d'arrêt
Dans la partie gauche, au niveau de l'affichage du code du fichier, cherchez la ligne où vous souhaitez mettre un point d'arrêt (c'est à dire où arrêter le programme afin de voir l'état des variables etc du moment que vous avez choisi) et cliquez à gauche du numéro de la dite ligne. Un point rouge apparaît.
L'onglet Points d'arrêt affiche tous les points d'arrêts que vous avez placé.
Enlever point d'arrêt : cliquez sur le point rouge ou passez dans le menu points d'arrêt et appuyer sur la croix rouge à droite de l'élément désiré
Désactivé un point d'arrêt (vous gardez ainsi son emplacement) : décoché la case à gauche de l'élément
Voir où se trouve le point d'arrêt : cliquer sur le lien bleu de l'élément
Options de défilement :
Vous pouvez mettre autant de point d'arrêt que vous le souhaitez.
Pour passer au point d'arrêt suivant : F8 ou la flèche de lecture en haut à droite de firebug.
Pour faire ligne à ligne : F10 ou F11(plus détaillé) ou pas à pas sortant (dernière flèche)
Espions
Lorsque vous vous trouvez dans le code, z dans cet onglet, ensuite mettez en surbrillance les éléments dont vous voulez tester la valeur puis clic droit-> ajouter un espion. Vous aurez ainsi la valeur affichée dynamiuement et vous pourrez parcourir les différents attributs de l'élément s'il en a en cliquant sur le + à côté de l'élément
L'alert ne fonctionne pas.
Quand je met le echo, le bouton qui ouvre ma fonction JS ne fonctionne pas.
Quand je met pas le echo par contre ma fonction s'ouvre mais il n'y a rien qui s'affiche dans l alert
Quand je met le echo, le bouton qui ouvre ma fonction JS ne fonctionne pas.
Quand je met pas le echo par contre ma fonction s'ouvre mais il n'y a rien qui s'affiche dans l alert
Alors je vient de regarder. Quand je met un echo $fichier dans mon passage de paramètre, firebug affiche :
87 <tr>
<input type="image" title="lecture"value="Fenetre" src="../img/lecture.png" onclick="creer_fenetre(400,400,300,500,'poutre','<span class=\'ttgros\'><div class=\'centrebb\'><span class=\'vertc\'>COUCOU</span></div></span>','../upload/quentin.thomas/poutre/','["2008_A2_GIR_FIRON_FRANCOIS.pdf","sitemap.pptx"]')" />
Donc apparament $fichier vaut bien ["2008_A2_GIR_FIRON_FRANCOIS.pdf","sitemap.pptx"].
Quand je clique sur mon bouton JS pour afficher la fenetre sa me dit :
unterminated string literal
[Break on this error] creer_fenetre(400,400,300,500,'poutre','...>','../upload/quentin.thomas/poutre/','[
Quand je met le point d arret sur alert(fichier); et un espion sur fichier, firebug me dit : ReferenceError: texte is not defined
Voila se qu'il me dit.
87 <tr>
<input type="image" title="lecture"value="Fenetre" src="../img/lecture.png" onclick="creer_fenetre(400,400,300,500,'poutre','<span class=\'ttgros\'><div class=\'centrebb\'><span class=\'vertc\'>COUCOU</span></div></span>','../upload/quentin.thomas/poutre/','["2008_A2_GIR_FIRON_FRANCOIS.pdf","sitemap.pptx"]')" />
Donc apparament $fichier vaut bien ["2008_A2_GIR_FIRON_FRANCOIS.pdf","sitemap.pptx"].
Quand je clique sur mon bouton JS pour afficher la fenetre sa me dit :
unterminated string literal
[Break on this error] creer_fenetre(400,400,300,500,'poutre','...>','../upload/quentin.thomas/poutre/','[
Quand je met le point d arret sur alert(fichier); et un espion sur fichier, firebug me dit : ReferenceError: texte is not defined
Voila se qu'il me dit.
Sans le echo sa donne :
<input type="image" title="lecture"value="Fenetre" src="../img/lecture.png" onclick="creer_fenetre(400,400,300,500,'sitemap','<span class=\'rouge\'>Sitemap</span>','../upload/quentin.thomas/sitemap/','')" />
En mettant le point d'arret et l'espion la valeur est null dans la fonction JS ce qui est un peut normal.
<input type="image" title="lecture"value="Fenetre" src="../img/lecture.png" onclick="creer_fenetre(400,400,300,500,'sitemap','<span class=\'rouge\'>Sitemap</span>','../upload/quentin.thomas/sitemap/','')" />
En mettant le point d'arret et l'espion la valeur est null dans la fonction JS ce qui est un peut normal.
J'ai fait ce que tu as dits j'ai utiliser un regex pour faire le remplacement:
Cela donne :
$fichier=json_encode($filelist);
echo $fichier; ==>> ["2008_A2_GIR_FIRON_FRANCOIS.pdf","sitemap.pptx"]
$fichier = preg_replace ("#[\"]#isU",'\"', $fichier);
echo $fichier ==>> [\"2008_A2_GIR_FIRON_FRANCOIS.p\"\",\"sitemap.pptx\"]
Donc sa fonctionne je passe en parametre de cette facon :
<input type="image" title="lecture"value="Fenetre" src="../img/lecture.png" onclick="creer_fenetre(400,400,300,500,'<?php echo $titre; ?>','<?php echo $text; ?>','<?php echo $lien; ?>','<?php $fichier; ?>')" />
Au final avec firebug je pose l'espion sur fichier et il me dit : ReferenceError: fichier is not defined avt il me disait ReferenceError: text is not defined
Le JSON est peut etre pas adapter pour ca. Si tu as une autre idée pour passer ce tableau PHP dans ma fonction creer_fenetre, je suis preneur.
Cela donne :
$fichier=json_encode($filelist);
echo $fichier; ==>> ["2008_A2_GIR_FIRON_FRANCOIS.pdf","sitemap.pptx"]
$fichier = preg_replace ("#[\"]#isU",'\"', $fichier);
echo $fichier ==>> [\"2008_A2_GIR_FIRON_FRANCOIS.p\"\",\"sitemap.pptx\"]
Donc sa fonctionne je passe en parametre de cette facon :
<input type="image" title="lecture"value="Fenetre" src="../img/lecture.png" onclick="creer_fenetre(400,400,300,500,'<?php echo $titre; ?>','<?php echo $text; ?>','<?php echo $lien; ?>','<?php $fichier; ?>')" />
Au final avec firebug je pose l'espion sur fichier et il me dit : ReferenceError: fichier is not defined avt il me disait ReferenceError: text is not defined
Le JSON est peut etre pas adapter pour ca. Si tu as une autre idée pour passer ce tableau PHP dans ma fonction creer_fenetre, je suis preneur.
J'ai finalement réussie en faisant comme ceci :
PHP :
$fichier=implode(",",$filelist);
<input type="image" title="lecture"value="Fenetre" src="../img/lecture.png" onclick="creer_fenetre(400,400,300,500,'<?php echo $titre; ?>','<?php echo $text; ?>','<?php echo $lien; ?>','<?php echo $fichier; ?>','<?php echo $j; ?>')" />
JS :
function creer_fenetre(left,top,width,height,titre,texte,lien,fichier,nombre) {
alert(lien);
var fichier= fichier.split("," );
alert(fichier[0]);
Merci pour ton aide NookZ
PHP :
$fichier=implode(",",$filelist);
<input type="image" title="lecture"value="Fenetre" src="../img/lecture.png" onclick="creer_fenetre(400,400,300,500,'<?php echo $titre; ?>','<?php echo $text; ?>','<?php echo $lien; ?>','<?php echo $fichier; ?>','<?php echo $j; ?>')" />
JS :
function creer_fenetre(left,top,width,height,titre,texte,lien,fichier,nombre) {
alert(lien);
var fichier= fichier.split("," );
alert(fichier[0]);
Merci pour ton aide NookZ