我在写一个PHP脚本时遇到了一个奇怪的问题 - 我确信答案很简单,但我没有看到它。
我使用PHP从数据库中提取一些变量,然后将这些值传递给在PHP中动态构建的Javascript。像这样:
$myvar = (bool) $db_return->myvar;
$js = "<script type=text/javascript>
var myvar = " . $myvar . ";
var myurl = 'http://someserver.com/ajaxpage.php?urlvar=myvar';
</script>";
问题是如果DB中“myvar”的布尔值是false
,那么$ js中的myvar实例为空,而不是false
,这打破了脚本
有没有办法将值false
正确传递给myvar变量?
谢谢!
答案 0 :(得分:58)
使用json_encode()
。它将从本机PHP类型转换为本机Javascript类型:
var myvar = <?php echo json_encode($my_var); ?>;
并且还将处理将其转换为有效javascript所需的任何转义。
答案 1 :(得分:5)
这是最简单的解决方案:
在$ js中使用 var_export($ myvar)代替 $ myvar ;
$js = "<script type=text/javascript>
var myvar = " . var_export($myvar) . ";
var myurl = 'http://someserver.com/ajaxpage.php?urlvar=myvar';
</script>";
注意:var_export()与PHP 4.2.0 +
兼容答案 2 :(得分:3)
$js = "<script type=text/javascript>
var myvar = " . ($myvar ? 'true' : 'false') . ";
var myurl = 'http://someserver.com/ajaxpage.php?urlvar=myvar';
</script>";