私が書いている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のインスタンスがfalse
ではなくnullであり、これがスクリプトを壊していることです。
値false
をmyvar変数に適切に渡す方法はありますか?
ありがとう!
json_encode()
を使用します。ネイティブPHPタイプからネイティブJavascriptタイプに変換します:
var myvar = <?php echo json_encode($my_var); ?>;
また、それを有効なJavaScriptに変換するために必要なエスケープも処理します。
これが最も簡単な解決策です。
$ 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() はPHP 4.2.0+と互換性があります
$js = "<script type=text/javascript>
var myvar = " . ($myvar ? 'true' : 'false') . ";
var myurl = 'http://someserver.com/ajaxpage.php?urlvar=myvar';
</script>";