38

私が書いているPHPスクリプトで奇妙な問題に遭遇しました。簡単な答えがあると確信していますが、それはわかりません。

PHPを使用してDBからいくつかの変数を取得し、それらの値を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」のDBのブール値がである場合false、$ jsのmyvarのインスタンスはnullではなくnullでありfalse、これがスクリプトを壊していることです。

false値をmyvar変数に適切に渡す方法はありますか?

ありがとう!

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で$myvarの代わりにvar_export($ myvar)を使用するだけです。

$js = "<script type=text/javascript>
        var myvar = " . var_export($myvar) . ";
        var myurl = 'http://someserver.com/ajaxpage.php?urlvar=myvar';
       </script>";

注:var_export()はPHP4.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 に答える