2010-09-22 6 views
4

J'essaie de passer une variable php à l'intérieur de javascript bt cela ne fonctionne pas.Est-il possible de passer une variable php en javascript?

<a href="javascript:wait1();getPass('<?php echo $current?>');">Comment</a> 

Est-il possible de le faire ou je peut être quelque part ... incorrect

Merci pour votre réponse à l'avance! :)

+0

Pour moi, ça fonctionne bien quand j'attribue une valeur '' – svk

+2

Mettez un ';' après '$ current' et/ou mettez un espace après' $ current': ' <$ php echo $ current; ?> ' – vol7ron

+0

pouvez-vous élaborer sur" ne fonctionne pas "? quelle est la sortie html? – mpen

Répondre

1

Vous générez dynamiquement Javascript. Vous vous épargnerez des maux de tête si vous avez besoin de le faire, gardez les choses simples. Transférer les données de PHP Javascript dans la manière la plus simple possible en haut de la page:

<script type="text/javascript" > 
var $current = '<%? echo $current; %>'; 
</script> 

Comme d'autres l'ont souligné, vous voudrez encoder et citer votre variable php, en utilisant json_encode (dans ce cas, vous probablement n'aura pas besoin des guillemets), ou une fonction d'échappement plus simple si vous connaissez les valeurs possibles.

Maintenant, votre code en ligne peut être plus simple:

<a href="javascript:wait1();getPass($current);">Comment</a> 

Une dernière recommandation serait de tirer ceci dans sa propre fonction, et utiliser l'attribut « onclick ».

2

D'abord, vous devriez probablement changer tag 'java' à 'javascript'.

En ce qui concerne votre question - PHP est analysé sur le côté serveur, alors que Javascript fonctionne sur le côté client. Si vous ne comptez pas utiliser les appels AJAX et asynchrone, vous pouvez écrire des valeurs à la source JS, comme ceci:

<script type="text/javascript"> 
    var foo = <?php echo $yourData; ?>; 
    alert(foo); 
</script> 
+0

effectivement, j'utilise AJAX .... donc, collé avec le problème. –

0

Utilisez json_encode() si votre PHP a.
Cela automatiquement devis et échapper votre chaîne et assure que les caractères spéciaux sont correctement codés pour empêcher les attaques de scripts intersites (XSS). Cependant, je pense que vous devrez passer des chaînes UTF-8 à cette fonction.

Et vol7ron a un bon point – vous devez mettre un point-virgule ; après votre déclaration et mettre un espace entre cela et le point d'interrogation ? pour une meilleure lisibilité.

<a href="javascript:wait1();getPass(<?php echo json_encode($current); ?>);">Comment</a> 

Vous pouvez également passer booléens, ints et des tableaux entiers à même json_encode() de les transmettre à JavaScript.

+0

assez sûr que '?' * Ne sera * pas interprété comme un opérateur. – mpen

+0

Merci!Je ne pouvais pas observer cela avec ma version de PHP mais je n'étais pas sûr. Retiré cette partie. – Archimedix

2
<a href="javascript:wait1();getPass('<?=$current?>');">Comment</a> 
Questions connexes