到目前为止,我知道将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 ?>)">
所有这些都很有效但是:
我还有其他方法吗?
哪一个是“最好的”?
我可以在脚本或外部js中使用吗?
答案 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");