我有以下代码行:
<a href="javascript:;" onClick="tweeet('myid')">My Tweets!</a>
现在虽然这完全正常,但以下行不是:
<a href="javascript:;" onClick="tweeet(<?php echo 'myid'; ?>)">My Tweets!</a>
任何人都可以帮助我解释它为什么不起作用并建议任何更改?我想传递给Javascript函数的变量是一个PHP变量。我用单引号和双引号尝试了PHP,但它没有用。
答案 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>
使用短回声的东西。