Intereting Posts
Ошибка PHP: «Вызов неопределенной функции mysqli_connect ()» .htaccess переписать правила для нескольких параметров Перенаправление PHP после вставки Mysql Удаление последней запятой в PHP? от переменной mysql до javascript Weird PHP error: «Невозможно использовать возвращаемое значение функции в контексте записи» Как я могу вычислить хэш SHA-256 строки в Android? Создание объектов с доктриной в отдельное пространство имен Найти пользователя в Laravel по имени пользователя Как обрезать изображение с помощью php с помощью jquery imgAreaSelect? Создание PDF из HTML PHP Как имитировать поведение автоматической привязки StackOverflow Лучший способ справиться с ошибками в полнотекстовом поиске MySQL PHP: как я могу заблокировать прямой доступ к URL-адресу для файла, но все-таки разрешить его загрузку вошедшим в систему пользователям? Файл cookie SessionId в CakePHP вызывает зависание страницы

Как передать переменную PHP в Javascript?

У меня 2 страницы, один PHP и один Javascript. Я хотел бы передать переменную из этого PHP-скрипта на одной странице:

$strFind="SELECT * FROM cometchat_chatrooms_users WHERE userid=$curmemid"; $result=mysql_query($strFind) or die(mysql_error()); $row=mysql_fetch_array($result); $room=$row['chatroomid']; 

на этот Javascript на другой странице:

 var timestamp = 0; var currentroom = $room; var heartbeatTimer; var minHeartbeat = 3000; var maxHeartbeat = 12000; 

Как я могу это сделать?

Вы не можете «пропускать» переменную где угодно. Но только скалярное значение. Честно говоря, вы можете передавать только текстовые данные.
Итак, в случае javascript у вас есть 2 варианта:

  1. Для генерации целого js-кода из PHP вместе со всеми его переменными. Очень нравится, как вы создаете HTML.

  2. Чтобы запросить некоторую переменную из JS, запущенной в браузере, используя технику AJAX.

Вы можете это сделать, когда JavaScript генерируется PHP. Пример:

 <?php ... $curmemid = intval($externalValue); $strFind = 'SELECT * FROM cometchat_chatrooms_users WHERE userid='.$curmemid; $result = mysql_query($strFind) or die(mysql_error()); if (isset($result)) { $row = mysql_fetch_array($result); $room = $row['chatroomid']; } else { echo 'There is something wrong!'; $room = -1; } ... ?> <script type="text/javascript"> var timestamp = 0; var currentroom = <?php echo $room; ?>; var heartbeatTimer; var minHeartbeat = 3000; var maxHeartbeat = 12000; </script> 
 <?php $strFind="SELECT * FROM cometchat_chatrooms_users WHERE userid=$curmemid"; $result=mysql_query($strFind) or die(mysql_error()); $row=mysql_fetch_array($result); $room=$row['chatroomid']; ?> <script type="text/javascript"> var timestamp = 0; var currentroom = <?php if(isset($room))echo $room; else echo ""; ?>; var heartbeatTimer; var minHeartbeat = 3000; var maxHeartbeat = 12000; </script> 

Другим вариантом является PHP, выводящий скрытый элемент с переменной в нем, а затем JS, читающий его.

Например

 <?php echo '<input type="hidden" id="myvar" value='.$val.' />'; ?> 

а затем в JS

  var v = document.getElementById("myvar"); // do something with v.value 

Конечно, это легко подделать клиентом, поэтому возьмите 2 предостережения:

1) используйте это только в том случае, если для любого пользователя нет проблемы с возможностью видеть значение переменной (например, глядя на источник)

2) если JS делает что-то, что может быть «опасно», например, делает асинхронный вызов страницы PHP, которая что-то делает в БД с этим значением, обязательно должна иметь правильные проверки на второй странице PHP (НЕ в JS) для обеспечения того, чтобы ценность не была подделана

для другой страницы вы можете использовать $ _SESSION

 <script type="text/javascript"> var timestamp = 0; var currentroom = <?php echo $_SESSION['room']; ?>; var heartbeatTimer; var minHeartbeat = 3000; var maxHeartbeat = 12000; </script> 

Для такой же последовательности файлов и сценариев – это очень просто, не нужно СЕССИИ

  var currentroom = <?php echo $room; ?>; 

попробуйте использовать Session для хранения вашей переменной комнаты и использовать ее с javascript с помощью команды echo

Код будет работать как есть. Когда вывод (html и javascript) генерируется вашим php, он уже выполнил замену. Таким образом, ваше значение будет вставлено в виде литерала. Если это строка, вам все равно придется ее процитировать.

var currentroom = '$ room';

станет

var currentroom = 'myroom';

в выводе.