Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/09/2011, 13h54   #1
Membre régulier
 
Inscription : décembre 2006
Messages : 493
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 493
Points : 90
Points : 90
Par défaut Ligne javascript lue même dans une condition non vérifiée

Bonjour, j'aurais besoin de vos lumières pour comprendre pourquoi un code javascript est lu même lorsqu'il est dans une condition qui n'est pas validée. Attention, je dis lu, pas exécuté ! Je sais qu'il est lu car mon outil Web Developer me retourne une erreur sur une des lignes dans la condition.

Je m'explique : sur une page j'ai un formulaire; lorsqu'il est envoyé, la page est rechargée et m'affiche une div. Sur cette page j'ai un variable javascript qui prend pour valeur la valeur PHP envoyée par la méthode POST.

Le problème c'est qu'à la première arrivée sur la page, puisqu'aucune valeur POST n'est encore envoyée, je n'ai pas de valeur PHP et donc ma variable javascript retourne une erreur. Logique. Donc j'ai pensé mettre une condition qui vérifiait si la div était visible (POST passé) ou pas, mais malgré ça la ligne est quand même lue.

Code :
1
2
3
4
5
if ($('#tabs').is(':visible')) {
	var mc=<?php echo $_POST['mot']; ?>;
	$('#child').val(mot);
	alert('detect');
}
Au premier chargement de la page, pas d'alert donc, mais une erreur à la ligne 2 "syntax error : var mc=;". Une explication ? Merci d'avance.
nicolas2603 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 13h56   #2
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 040
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 040
Points : 45 141
Points : 45 141
il est ou le test isset sur le post ?
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 14h01   #3
Membre éclairé
 
Homme
F5(){F5}
Inscription : avril 2008
Messages : 256
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : F5(){F5}
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2008
Messages : 256
Points : 320
Points : 320
salut,

je sais pas ce que te renvois ta page au premier chargement, mais si elle te renvoit du code html avec un , a fortiori, le div n'a pas de raison detre caché et le if est validé.

L'erreur comme lindique web developper c'est que ton code avec le truc php équivaut à écrire :
ce qui est syntaxiquement invalide.
(pour ten convaincre, clique droit, code source sur ta page php générée dans ton browser).

Donc le plus simple c que tu écrives
Code :
var mc='<?php echo $lol;?>';
et là pu de probleme.
galerien69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 14h03   #4
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 040
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 040
Points : 45 141
Points : 45 141
Citation:
Donc le plus simple c que tu écrives
Code :
Sélectionner tout - Visualiser dans une fenêtre à part

var mc='<?php echo $lol;?>';

et là pu de probleme.
???
heu le plus simple est de faire un test isset ...
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 14h11   #5
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 994
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 994
Points : 5 787
Points : 5 787
Envoyer un message via Skype™ à jreaux62
Bonjour,
on peut mixer les 2 solutions :
Citation:
var mc='<?php if(isset($_POST['mot'])) echo $_POST['mot']; ?>';
Ce qui donnera :
Citation:
var mc='';
ou
var mc='lemot';
Ce qui règle en même temps les problèmes d'erreur PHP et JavaScript.
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 14h22   #6
Membre régulier
 
Inscription : décembre 2006
Messages : 493
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 493
Points : 90
Points : 90
J'ai comme le sentiment que vous allez me dire que j'ai super mal construit ma page !! J'ai en premier mon formulaire, ensuite j'ai le isset, puis j'ai le javascript :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<div>
    <form>...</form>
    <?php if (isset($_POST['mot'])) { ?>
        <div id="tabs">...</div>
    <?php } ?>
</div>
 
<script>
$(function() {
if ($('#tabs').is(':visible')) {
	var mc=<?php echo $_POST['mot']; ?>;
	$('#child').val(mot);
	alert('detect');
}
});
</script>
Je viens de tester en mettant le javascript DANS le isset, et c'est pareil !
nicolas2603 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 14h24   #7
Membre régulier
 
Inscription : décembre 2006
Messages : 493
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 493
Points : 90
Points : 90
En revanche, la solution de rajouter les ' ' semble résoudre le problème, mon erreur n'apparait plus ! Merci à tous.
nicolas2603 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 14h29   #8
Membre Expert
 
Avatar de Eric2a
 
Homme Eric Garidacci
Inscription : septembre 2005
Messages : 1 057
Détails du profil
Informations personnelles :
Nom : Homme Eric Garidacci
Âge : 41

Informations forums :
Inscription : septembre 2005
Messages : 1 057
Points : 1 564
Points : 1 564
Salut,

Si tu ne veux ni la balise (div="tabs") ni la balise script quand la variable n'est pas transmise, tu peux aussi faire...

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
$mot=(isset($_POST['mot']))?$_POST['mot']:'';
?>
 
<div>
	<form>...</form>
<?php if($mot!='') { ?>
		<div id="tabs">...</div>
<?php } ?>
</div>
 
<?php if($mot!=''){ ?>
<script type="text/javascript">
	$(function(){
		if ($('#tabs').is(':visible')){
			var mc='<?php echo $mot; ?>';
			$('#child').val(mot);
			alert('detect');
		}
	});
</script>
<?php } ?>
__________________

N'oubliez pas le vote des messages utiles ainsi que le Tag [Résolu].

Mon Site Web : Corse - Actualité, Météo, Vidéos, Logiciels, ...
Eric2a est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 14h33   #9
Membre régulier
 
Inscription : décembre 2006
Messages : 493
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 493
Points : 90
Points : 90
Oui c'est une solution également. Merci !
nicolas2603 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 14h48   #10
Membre éclairé
 
Homme
F5(){F5}
Inscription : avril 2008
Messages : 256
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : F5(){F5}
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2008
Messages : 256
Points : 320
Points : 320
Citation:
???
heu le plus simple est de faire un test isset ...
le prends pas mal si mon avis diffère. Moi cque je vois c'est que quelquesoit la valeur de mot, qui sémantiquement est un string, on va se taper une erreur en ayant var mc=leMotAvecRienAutour;

Effectivement, lexécution de la présence de tabs ou pas, n'a rien a voir avec le probleme du mot. Mais la question était double.
Pourquoi le if est exécuté, et pourquoi ca merde a la ligne var mc.

edit:jreaux62 avait déjà précisé le probleme.
galerien69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h53.


 
 
 
 
Partenaires

Hébergement Web