将php加密值传递给javascript参数

时间:2014-02-19 11:50:37

标签: javascript php encryption parameters

<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函数中获得任何价值。我无法理解错误是什么?

4 个答案:

答案 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>