2010-09-22 115 views
4

我想通过一个php变量里面的JavaScript bt它不工作。是否有可能在JavaScript内部传递一个php变量?

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

是否有可能这样做,否则我可能是不正确的地方......

感谢提前您的答复! :)

+0

对我来说,当我赋值'<?php $ current =“hai”>> – svk 2010-09-22 06:08:35

+2

在'$ current'之后放置一个';'并且/或者在'$ current'之后放置一个空格:'' <$ php echo $ current; ?>' – vol7ron 2010-09-22 06:12:48

+0

你能否详细说明“不工作”?什么是html输出? – mpen 2010-09-22 06:25:25

回答

1

您正在动态生成Javascript。如果你需要这样做,你可以节省一些头痛,保持简单。从PHP数据可以在页面的顶部转移到JavaScript中的最简单的方法:

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

正如其他人所指出的那样,你将要编码和引用你的PHP变量,使用json_encode(在这种情况下,你可能不需要引号),或者如果您知道可能的值,则可以使用更简单的转义函数。现在

,你的内嵌代码可以更简单:

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

最后一个建议是拉了这一点,为自己的功能,并使用“点击”属性。

2

首先,您可能应该将'java'标记更改为'javascript'。

关于你的问题 - PHP在服务器端解析,而Javascript在客户端运行。如果你不打算使用AJAX和异步调用,你可以写值到JS源,如:

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

实际上,我使用AJAX ....所以,坚持这个问题。 – 2010-09-22 06:51:57

0

使用json_encode()如果你的PHP有它。
这会自动引用并转义您的字符串,并确保特殊字符被正确编码以防止跨站点脚本攻击(XSS)攻击。 但是,我认为你必须将UTF-8字符串传递给这个函数。

而且vol7ron好点–你应该把分号;您的发言后,把那和更好的可读性问号?之间的空间。

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

您也可以通过布尔,整数,甚至整个阵列json_encode()将它们传递给JavaScript。

+0

很确定'?'*不会被解释为运算符。 – mpen 2010-09-22 06:29:55

+0

谢谢!我无法观察到我的PHP版本,但不确定。删除了该部分。 – Archimedix 2010-09-22 06:35:23

2
<a href="javascript:wait1();getPass('<?=$current?>');">Comment</a> 
相关问题