【问题标题】:boolean variable values in PHP to javascript implementation [duplicate]PHP中的布尔变量值到javascript实现[重复]
【发布时间】:2011-07-27 22:15:23
【问题描述】:

我在编写的 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 实例为空,而不是false,这会破坏脚本。

有没有办法将值 false 正确传递到 myvar 变量中?

谢谢!

【问题讨论】:

  • IMO 这个问题不是它所链接的问题的副本。这个问题更具体。值得庆幸的是,它在被锁定之前已经得到了有用的回答。

标签: php javascript boolean-expression


【解决方案1】:

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

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

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

【讨论】:

  • 非常聪明的解决方案 Marc,效果很好!谢谢。我还应该指出,问题出在将其转换为布尔值——如果我将其转换为 int,它会返回一个 0/​​1 值,这可以作为 int 传递给 JS,并进行评估通常由 JS 判断为 true/false。
  • 有效!很高兴知道如果没有json 技巧可以做到这一点。
  • 它可以,但是你负责生成有效的 javascript 代码。还记得 json IS javascript...所以当您可以使用完美的预构建时构建您自己的系统?
  • 这是正确的。由于“JSON”表示“JavaScript 对象表示法”,我会坚持使用这种方法而不是 var_export,它基于 PHP 而不是 JavaScript 特有的不同表示法。
【解决方案2】:

这是最简单的解决方案:

只需在 $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+

【讨论】:

    【解决方案3】:
    $js = "<script type=text/javascript>
        var myvar = " . ($myvar ? 'true' : 'false') . ";
        var myurl = 'http://someserver.com/ajaxpage.php?urlvar=myvar';
       </script>";
    

    【讨论】:

    • var_export($myvar)?你们都忘记了 var_export()... :)
    猜你喜欢
    • 2015-09-03
    • 1970-01-01
    • 2013-03-06
    • 2018-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-16
    相关资源
    最近更新 更多