web-dev-qa-db-ja.com

エコーPHP Javascript内?

なぜこれが機能しないのですか?

<?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>

$reJavaScript内はエコーされません。しかし、上記のPHP関数内に配置すると、エコーされます。

編集-しかし、なぜISこれが機能しないのですか?

if(<?php echo $re; ?>){
    document.getElementById('hide').style.display = "none";
}

ifの外側にhide関数を配置すると、機能します。

9
sarthak

エコーされますが、テキストはブラウザに表示されない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変数に変換します。

15
Stefan Gehrig

これを試して:

<script type="text/javascript">
alert('<?php echo $re; ?>');
</script>
5
Umang Goyal

まず、すべてのDB関連の操作が常に正常に完了し、常にデータを返すとは限りません。 PHPマニュアルを開き、すべてのmysqli_ *関数呼び出しを確認し、適切なテストを追加して、エラーコードが返されるかどうかを検出します。

次に、PHPとJavaScriptは同時に実行されません。PHPが実行されると、ブラウザに送信されるプレーンテキストだけが表示されます。そのテキストはたまたまJavaScriptコードであり、実行されます。推測する必要はありません。JavaScriptコードはすぐそこにあり、ブラウザの[ソースの表示]メニューを使用して検査できます。

1

エコーしているソースを表示してみて確認してください

<script type="text/javascript">
alert('<?=$re; ?>');
</script>
0
Shakti Singh