使用PHP将参数传递给Javascript

时间:2010-06-10 20:00:01

标签: php javascript

我有以下代码行:

<a href="javascript:;" onClick="tweeet('myid')">My Tweets!</a>

现在虽然这完全正常,但以下行不是:

<a href="javascript:;" onClick="tweeet(<?php echo 'myid'; ?>)">My Tweets!</a> 

任何人都可以帮助我解释它为什么不起作用并建议任何更改?我想传递给Javascript函数的变量是一个PHP变量。我用单引号和双引号尝试了PHP,但它没有用。

4 个答案:

答案 0 :(得分:6)

您需要两者的引用 php端 Javascript端。那里你只有php引用。

<a href="javascript:;" onClick="tweeet('<?php echo 'myid'; ?>')">My Tweets!</a>

看起来很奇怪,但它应该可以工作,虽然我不是PHP专家。请注意,如果“myid”(在php端)可能包含用户提供的数据(例如某些时候来自<input>字段的内容),或者如果它是不可预测的,那么它有任何机会在服务器端放置一些东西,以确保生成的标签是“干净的”。

答案 1 :(得分:1)

我通常做如下:

<script>
  var jsvar = <?=json_encode($php_var)?>;
</script>

之后我可以在javascript代码下使用jsvar。为了便于阅读,我通常将所有这些作业放在自己的脚本标签中。

使用<?=json_encode($php_var)?>获得的是你不需要继续转义,它适用于数组和哈希以及字符串,数字等......

例如,关注php代码:

<?php
$php_string = "hello";
$php_array = array( 'a', 'b', 'c' );
$php_hash = array( 'a' => 1, 'b' => 16, 'c' => 42 );
$php_number = 123;
$php_bool = false;
$php_null = null;
?>
<script type="text/javascript">
var js_string = <?=json_encode($php_string)?>;
var js_array = <?=json_encode($php_array)?>;
var js_hash = <?=json_encode($php_hash)?>;
var js_number = <?=json_encode($php_number)?>;
var js_bool = <?=json_encode($php_bool)?>;
var js_null = <?=json_encode($php_null)?>;
</script>

产生以下结果:

<script type="text/javascript">
var js_string = "hello";
var js_array = ["a","b","c"];
var js_hash = {"a":1,"b":16,"c":42};
var js_number = 123;
var js_bool = false;
var js_null = null;
</script>

答案 2 :(得分:1)

你忘了引用你的答案。你正在回显字符串OK,但你需要''响应,所以JavaScript会知道它是一个字符串。您可以使用'或\“

答案 3 :(得分:0)

<a href="javascript:;" onClick="tweeet('<?='myid'; ?>')">My Tweets!</a>

使用短回声的东西。