【问题标题】:Call a javascript method with PHP variables as parameters, [duplicate]使用 PHP 变量作为参数调用 javascript 方法,[重复]
【发布时间】:2013-08-04 14:23:00
【问题描述】:

假设你有一个像这样的Javascript 函数:

function foo(param1,param2)
{
//some code here
}

param1param2 存储在myDatabase 中。

我的page.php请求myDatabase提取param1param2,然后将它们存储为PHP变量$param1$param2

如何将 $param1$param2PHP 转换为 Javascript 以便我可以调用我的函数。

<div onClick="foo(param1,param2)"></div>

【问题讨论】:

    标签: php javascript


    【解决方案1】:

    你有没有想过这个:

    <div onClick="foo(<?php echo $param1 ?>,(<?php echo $param2 ?>)"></div>
    

    如果 $param1 和 $param2 应该是字符串、数组或对象,那么您应该在回显之前使用 json_encode:

    <div onClick="foo(<?php echo htmlspecialchars(json_encode($param1)) ?>,(<?php echo htmlspecialchars(json_encode($param2)) ?>)"></div>
    

    【讨论】:

    • 与 json_encode 一起,应该使用 htmlspecialchars,这样它就不会破坏 html
    【解决方案2】:

    如果$param1 是整数并且$param2 是您编写的字符串,则在您的 PHP 文件中

    echo "<div onclick=\"foo($param1, '$param2')\"></div>";
    

    【讨论】:

    • 您不能在此 html 属性值中使用 "。请使用 ' 或实体 "
    • @IvanHušnjak - 我注意到了这一点并且正在修复它。
    • 数组和对象呢?
    【解决方案3】:
    <div onClick="foo('<?= $param1; ?>','<?= $param2; ?>')"></div>
    

    【讨论】:

      【解决方案4】:
      <div onClick="foo('<?php echo $param1 ?>', '<?php echo $param2 ?>')"></div>
      

      确保正确使用单引号和双引号。

      【讨论】:

        【解决方案5】:

        你可以这样使用

         var simple ='<?php echo $sparam1; ?>';
        

        然后传入参数

        【讨论】:

          【解决方案6】:

          您必须将这些 PHP 变量值打印到页面上,以便 JavaScript 可以访问它们。

          像这样:

          <script>
          
          var param1 = <?= json_encode( $param1 ) ?>;
          var param2 = <?= json_encode( $param2 ) ?>;
          
          
          ... other code ...
          
          </script>
          

          json_encode() 用于在字符串中添加引号、转义引号等。
          没有它,你的 php 字符串可能会破坏 javascript 语法。

          【讨论】:

          • 所以如果我在 PHP ArraysObjects 上使用 json_encode(),那么他们将更正 Javascript ArraysObjects?
          • 是的。我不确定Object 是什么意思,但我知道它们适用于数组和关联数组。也许对象也是。
          • class A {public $foo = 1;} $a=new A(); json_encode($a) 是否会返回如下内容:var a { foo:1 }
          猜你喜欢
          • 1970-01-01
          • 2019-10-10
          • 1970-01-01
          • 1970-01-01
          • 2016-05-01
          • 1970-01-01
          • 2019-03-22
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多