<script>
function dinner(x,y)
{
alert(x,y);
}
</script>
<?php
$x='o7Y2RUgB3wuKsY4QshuARu/Egj4eQBndOoEj70B3GxQ=';
$y='12.30'
?>
<a onclick="dinner( <?php echo $x;?>,<?php echo $y;?>);" href="#" style="text- decoration: none;">click me</a>
我正在尝试将加密的php值(x)传递给Javascript函数。但我无法在javascript函数中获得任何价值。我无法理解错误是什么?
答案 0 :(得分:0)
你应该添加引号:
答案 1 :(得分:0)
我已更新您的代码:
<script>
function dinner(x,y)
{
alert(x + "" + y);
}
</script>
<?php
$x='o7Y2RUgB3wuKsY4QshuARu/Egj4eQBndOoEj70B3GxQ=';
$y='12.30'?>
<a onclick="dinner( '<?php echo $x;?>','<?php echo $y;?>');" href="#" style="text- decoration: none;">click me</a>
请记住,您正在将字符串传递给javascript函数,因此您应该将字符串放在引号之间。
答案 2 :(得分:0)
问题是,当php脚本编译时,它会发送此
<a onclick="dinner( o7Y2RUgB3wuKsY4QshuARu/Egj4eQBndOoEj70B3GxQ=,12.30);" href="#" style="text- decoration: none;">click me</a>
然后浏览器尝试使用名为o7Y2RUgB3wuKsY4QshuARu/Egj4eQBndOoEj70B3GxQ=
的变量,显然会失败。
要解决此问题,您必须将echo
括起来,如下所示
dinner( '<?php echo $x;?>','<?php echo $y;?>');
不要忘记检查浏览器控制台,总是有用的信息。
答案 3 :(得分:0)
这将是一个很好的方式,照顾所有必要的逃避:
$clickHandler = sprintf(
'return dinner(%s, %s)',
json_encode($x),
json_encode($y)
);
?>
<a href="#" onclick="<?php echo htmlspecialchars($clickHandler, ENT_QUOTES, 'UTF-8'); ?>" style="text-decoration:none;">click me</a>