Приравнивание переменных Javascript и PHP

<?php $a="cat"; $html=<<<HTML <html> <script> var b ="$a"; document.write(b); </script> </html> HTML; echo $html;?> 

этот код отображает cat, является ли это допустимым способом приравнивания переменных javascript к переменным php,

Действительно, возможно, это не то слово, которое я бы использовал. Работает ли это, это более важный вопрос для меня. В общем, поскольку PHP работает на сервере, прежде чем возвращать страницу в браузер, который затем интерпретирует и выполняет JavaScript, вы можете определенно писать переменные, которые JS будет использовать. Так будет ли это работать? конечно.

Есть ли лучший способ сделать это? Да, конечно. В общем, вы не хотите блоки исполняемых JS-операторов, находящихся в PHP-скрипте. Это просто путает вещи и делает их очень жесткими для поддержания. Я бы предпочел, чтобы JS запрашивал значение через вызов AJAX для службы PHP. Если вы должны использовать этот подход, я бы по-прежнему разделял проблемы немного лучше.

EDIT: Это работает для меня:

 <html> <head> <title>PHP-JS Writer</title> </head> <body> <?php $a = "cat"; echo "<script>var b = '$a'</script>"; ?> <h1>Writing JS variables with PHP</h1> <script> alert(b); </script> </body> </html> 

Если вы хотите преобразовать переменные PHP в Javascript, вы можете наилучшим образом использовать json_encode, потому что он обрабатывает все экранирование и такое для вас:

 <?php $a = "some value"; ?> <script> var a = <?php echo json_encode($a); ?>; console.log(a); </script> 

Вы можете использовать это и для более сложных структур:

 <script> var a = <?php echo json_encode(array('property' => 'value')); ?>; console.log(a.property); </script> 

Конечно, PHP оценивается на стороне сервера и стороне клиента JavaScript, поэтому нет возможности, чтобы JavaScript «разговаривал с PHP», как если бы он находился в той же области выполнения, что и не по определению. Это очень простая концепция сериализации и десериализации, чтобы одна платформа использовала данные из другого.

Вы можете реализовать асинхронные запросы («ajax») для извлечения данных с сервера, а также ответ сервера в JSON, поэтому механизм Javascript может анализировать содержимое ответа изначально. У этого есть потенциал вашего клиента, чтобы иметь возможность повторно извлекать данные без перезагрузки, но недостаток необходимости выполнять (по крайней мере) два HTTP-запроса.