将PHP变量传递给Javascript / jquery

时间:2012-01-06 13:01:11

标签: php javascript jquery

到目前为止,我知道将php变量传递给javascript的两种方法。 一个是使用

<script>  
      $(document).ready(function()
          phpvalue=$("#hiddeninput").val()

      })
  </script>

<input type="hidden" id="hiddeninput" value="phpvalue">

另一个是通过使用例如按钮并使用onclick

    <script>
       function clickf(phpvalue) {

       }
    </script>

<input type="submit" onclick="clickf(<?php echo phpvalue ?>)">

所有这些都很有效但是:

  1. 我还有其他方法吗?

  2. 哪一个是“最好的”?

  3. 我可以在脚本或外部js中使用吗?

5 个答案:

答案 0 :(得分:14)

<script>  
    $(document).ready(function()
        var phpvalue = <?php echo $var; ?>
    });
</script>

答案 1 :(得分:4)

与其他已经回答过的人一样,只要放置一个PHP标记就可以放置JS值,例如var foo = <?= $php_value ?>;var foo = <?php echo $php_value ?>;

如果要在外部JavaScript文件中使用它,则必须确保PHP解析.js文件。如果这不是您的选择(例如,您的主机不允许),我建议您在<script>内的<head>标记中设置值,然后仅引用您的变量外部JavaScript。在这种情况下,我强烈建议您将它们命名为var app_vars = { foo: <?= $bar ?> },以免弄乱全局对象。

另一种方法是通过Ajax来检索值。但这种方法的可行性取决于您的使用案例。

另一个提示:如果你想传递多个变量或数组,那么自5.2版以来就有JSON被加入PHP:

<?php
    $my_complex_var = array(
        'array' => array('foo', 'bar'),
        'val2' => 'hello world'
    );
?>
<script>
    var my_complex_js_var = <?= json_encode($my_complex_var) ?>
</script>

答案 2 :(得分:2)

<script>

var javascript_variable = <?php echo $php_variable; ?>;

</script>

答案 3 :(得分:1)

您可以直接生成JavaScript,而不是将值分配给隐藏的输入:

$script = <<<EOT
<script>
var phpvalue = $phpvalue;
</script>
EOT;
echo $script;

答案 4 :(得分:0)

对于顶级示例,您不需要使用val,您可以使用任何您喜欢的attr。 例如

phpvalue="myvalue"

然后在jquery中

$("#hiddeninput").attr("phpvalue");