Почему это не работает?
<?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, он получает эхо.
РЕДАКТИРОВАТЬ – НО ТО ПОЧЕМУ ЭТО НЕ РАБОТАЕТ?
if(<?php echo $re; ?>){ document.getElementById('hide').style.display = "none"; }
если я ВКЛЮЧАЮЬ функцию hide вне if, она работает.
Он получил эхо, но вы не увидите ничего на своей странице, так как текст будет записан в теге Javascript, который не отображается браузером. Посмотрите на свой источник страницы, чтобы убедиться, что текст действительно есть.
РЕДАКТИРОВАТЬ
Пытаться
if(<?php echo json_encode($re); ?>){ document.getElementById('hide').style.display = "none"; }
Это гарантирует, что ваша строка PHP будет преобразована в соответствующий тип Javascript – в случае строк она будет гарантировать, что строка заключена в "
и будет экранирована должным образом.
EDIT снова
Когда вы выполните следующее
<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>
Во-первых, вы не можете предположить, что все операции, связанные с БД, всегда будут выполняться с достаточной степенью точности и всегда будут возвращать данные. Откройте руководство по PHP, просмотрите все ваши вызовы функций mysqli_ * и добавьте правильный тест, чтобы определить, вернут ли они код ошибки или нет.
Во-вторых, PHP и JavaScript не запускаются одновременно. После выполнения PHP все, что вы получаете, – это простой текст, который отправляется в браузер. Если этот текст будет JavaScript-кодом, он будет запущен. И вам не нужно угадывать: код JavaScript находится прямо там, и вы можете использовать меню View Source вашего браузера, чтобы проверить его.
do view source, это эхо, попробуйте и подтвердите
<script type="text/javascript"> alert('<?=$re; ?>'); </script>