Passer une variable dans du JS(json_encode())
Fermé
beudet
Messages postés
122
Date d'inscription
vendredi 19 octobre 2007
Statut
Membre
Dernière intervention
24 février 2011
-
10 avril 2009 à 10:09
beudet Messages postés 122 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 24 février 2011 - 10 avril 2009 à 13:28
beudet Messages postés 122 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 24 février 2011 - 10 avril 2009 à 13:28
A voir également:
- Json_encode js
- Arrondi js - Forum Javascript
- Pb d'arrondi en javascript ✓ - Forum Windows
- Arrondir js - 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 Photoshop
- Pixlr - Forum Graphisme
15 réponses
NookZ
Messages postés
2138
Date d'inscription
jeudi 29 janvier 2009
Statut
Membre
Dernière intervention
7 mars 2013
514
10 avril 2009 à 10:13
10 avril 2009 à 10:13
En arrivant dans la fonction js vous devez faire un .value sur la variable correspondant à $fichier
beudet
Messages postés
122
Date d'inscription
vendredi 19 octobre 2007
Statut
Membre
Dernière intervention
24 février 2011
13
10 avril 2009 à 10:16
10 avril 2009 à 10:16
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 ?
NookZ
Messages postés
2138
Date d'inscription
jeudi 29 janvier 2009
Statut
Membre
Dernière intervention
7 mars 2013
514
10 avril 2009 à 10:23
10 avril 2009 à 10:23
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;
beudet
Messages postés
122
Date d'inscription
vendredi 19 octobre 2007
Statut
Membre
Dernière intervention
24 février 2011
13
10 avril 2009 à 10:36
10 avril 2009 à 10:36
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.
NookZ
Messages postés
2138
Date d'inscription
jeudi 29 janvier 2009
Statut
Membre
Dernière intervention
7 mars 2013
514
10 avril 2009 à 10:42
10 avril 2009 à 10:42
et si vous faites un alert(fichier) au niveau de l'alert(lien) ? Qu'est-ce qui est affiché?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
beudet
Messages postés
122
Date d'inscription
vendredi 19 octobre 2007
Statut
Membre
Dernière intervention
24 février 2011
13
10 avril 2009 à 10:44
10 avril 2009 à 10:44
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.
NookZ
Messages postés
2138
Date d'inscription
jeudi 29 janvier 2009
Statut
Membre
Dernière intervention
7 mars 2013
514
10 avril 2009 à 10:47
10 avril 2009 à 10:47
vous avez oublié le echo devant $fichier dans l'appel de la fonction js
beudet
Messages postés
122
Date d'inscription
vendredi 19 octobre 2007
Statut
Membre
Dernière intervention
24 février 2011
13
10 avril 2009 à 10:53
10 avril 2009 à 10:53
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.
NookZ
Messages postés
2138
Date d'inscription
jeudi 29 janvier 2009
Statut
Membre
Dernière intervention
7 mars 2013
514
10 avril 2009 à 10:55
10 avril 2009 à 10:55
vérifiez ce qu'il y a dans votre $filelist
beudet
Messages postés
122
Date d'inscription
vendredi 19 octobre 2007
Statut
Membre
Dernière intervention
24 février 2011
13
10 avril 2009 à 11:03
10 avril 2009 à 11:03
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
NookZ
Messages postés
2138
Date d'inscription
jeudi 29 janvier 2009
Statut
Membre
Dernière intervention
7 mars 2013
514
10 avril 2009 à 11:15
10 avril 2009 à 11:15
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
beudet
Messages postés
122
Date d'inscription
vendredi 19 octobre 2007
Statut
Membre
Dernière intervention
24 février 2011
13
10 avril 2009 à 11:27
10 avril 2009 à 11:27
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
NookZ
Messages postés
2138
Date d'inscription
jeudi 29 janvier 2009
Statut
Membre
Dernière intervention
7 mars 2013
514
10 avril 2009 à 11:29
10 avril 2009 à 11:29
Regardez la modif de mon post juste au-dessus ainsi vous pourrez tester plus efficacement je pense
beudet
Messages postés
122
Date d'inscription
vendredi 19 octobre 2007
Statut
Membre
Dernière intervention
24 février 2011
13
10 avril 2009 à 11:31
10 avril 2009 à 11:31
Je regarde et je vous dit quoi.
NookZ
Messages postés
2138
Date d'inscription
jeudi 29 janvier 2009
Statut
Membre
Dernière intervention
7 mars 2013
514
10 avril 2009 à 11:34
10 avril 2009 à 11:34
si c'était une question vous mettez un point d'arrêt sur la première ligne de la fonction js et vous ajouter un espion sur "fichier"
beudet
Messages postés
122
Date d'inscription
vendredi 19 octobre 2007
Statut
Membre
Dernière intervention
24 février 2011
13
10 avril 2009 à 11:45
10 avril 2009 à 11:45
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.
beudet
Messages postés
122
Date d'inscription
vendredi 19 octobre 2007
Statut
Membre
Dernière intervention
24 février 2011
13
10 avril 2009 à 11:48
10 avril 2009 à 11:48
C'etait juste une expression je vous dits quoi :D
NookZ
Messages postés
2138
Date d'inscription
jeudi 29 janvier 2009
Statut
Membre
Dernière intervention
7 mars 2013
514
10 avril 2009 à 11:52
10 avril 2009 à 11:52
ah ben normal que ça marche pas.
La variable $fichier contient des ".
Ok maintenant faites le même test que celui là sans le echo
La variable $fichier contient des ".
Ok maintenant faites le même test que celui là sans le echo
beudet
Messages postés
122
Date d'inscription
vendredi 19 octobre 2007
Statut
Membre
Dernière intervention
24 février 2011
13
10 avril 2009 à 11:58
10 avril 2009 à 11:58
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.
NookZ
Messages postés
2138
Date d'inscription
jeudi 29 janvier 2009
Statut
Membre
Dernière intervention
7 mars 2013
514
10 avril 2009 à 12:01
10 avril 2009 à 12:01
Je trouve ça bizarre que le JSON ne puisse pas être passé plus simplement mais bon je suppose que c'était aps vraiment prévu pour ça.
Bref je vois une solution simple et efficace :
faire un remplacement dans $fichier de tous les " par des \"
Bref je vois une solution simple et efficace :
faire un remplacement dans $fichier de tous les " par des \"
beudet
Messages postés
122
Date d'inscription
vendredi 19 octobre 2007
Statut
Membre
Dernière intervention
24 février 2011
13
10 avril 2009 à 12:18
10 avril 2009 à 12:18
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.
beudet
Messages postés
122
Date d'inscription
vendredi 19 octobre 2007
Statut
Membre
Dernière intervention
24 février 2011
13
10 avril 2009 à 13:28
10 avril 2009 à 13:28
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