38

我在编写的 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>";

问题是,如果数据库中“myvar”的布尔值为false,则 $js 中的 myvar 实例为 null,而不是false,这会破坏脚本。

有没有办法将值正确传递给falsemyvar 变量?

谢谢!

4

3 回答 3

78

使用json_encode(). 它将从原生 PHP 类型转换为原生 Javascript 类型:

var myvar = <?php echo json_encode($my_var); ?>;

并且还将处理任何必要的转义,以将其转换为有效的 javascript。

于 2011-04-01T19:10:38.247 回答
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+ 兼容

于 2011-04-01T19:20:02.187 回答
3
$js = "<script type=text/javascript>
    var myvar = " . ($myvar ? 'true' : 'false') . ";
    var myurl = 'http://someserver.com/ajaxpage.php?urlvar=myvar';
   </script>";
于 2011-04-01T19:09:42.183 回答