なぜこれが機能しないのですか?
<?php
mysqli_select_db($connect,"dev");
$response = "Select response from revbut where session='$u'";
$rquery = mysqli_query($connect,$response);
$responseanswer = mysqli_fetch_array($rquery);
$re = $responseanswer['response'];
?>
<script type="text/javascript">
<?php echo $re; ?>
</script>
$re
JavaScript内はエコーされません。しかし、上記のPHP関数内に配置すると、エコーされます。
編集-しかし、なぜISこれが機能しないのですか?
if(<?php echo $re; ?>){
document.getElementById('hide').style.display = "none";
}
ifの外側にhide関数を配置すると、機能します。
エコーされますが、テキストはブラウザに表示されないJavascriptタグ内に書き込まれるため、ページには何も表示されません。ページソースを見て、テキストが実際にそこにあることを確認します。
[〜#〜]編集[〜#〜]
試してみてください
_if(<?php echo json_encode($re); ?>){
document.getElementById('hide').style.display = "none";
}
_
これにより、PHP文字列が適切なJavascriptタイプに変換されます。文字列の場合、文字列が_"
_で囲まれ、適切にエスケープされます。
再度編集
次のことをするとき
_<script type="text/javascript">
if(<?php echo $re; ?>){
document.getElementById('hide').style.display = "none"; }
</script>
_
これはHTMLページに書き込まれるものです(ブラウザによって解釈されます)
_<script type="text/javascript">
if(whatever is in the $re vairable){
document.getElementById('hide').style.display = "none"; }
</script>
_
しかし、これは有効なJavascriptでさえありません。あなたが欲しいのは
_<script type="text/javascript">
if("whatever is in the $re vairable"){
document.getElementById('hide').style.display = "none"; }
</script>
_
_"
_は、すべてが有効なJavascriptであり、_$re
_の内容がブラウザのJavascriptエンジンによってJavascript文字列として解釈されることを保証することに注意してください。 json_encode()
の呼び出しは、まさにこれを行います-PHP変数を適切なJavascript変数に変換します。
これを試して:
<script type="text/javascript">
alert('<?php echo $re; ?>');
</script>
まず、すべてのDB関連の操作が常に正常に完了し、常にデータを返すとは限りません。 PHPマニュアルを開き、すべてのmysqli_ *関数呼び出しを確認し、適切なテストを追加して、エラーコードが返されるかどうかを検出します。
次に、PHPとJavaScriptは同時に実行されません。PHPが実行されると、ブラウザに送信されるプレーンテキストだけが表示されます。そのテキストはたまたまJavaScriptコードであり、実行されます。推測する必要はありません。JavaScriptコードはすぐそこにあり、ブラウザの[ソースの表示]メニューを使用して検査できます。
エコーしているソースを表示してみて確認してください
<script type="text/javascript">
alert('<?=$re; ?>');
</script>