Я пробовал (но его не работает):
<?php $htmlString= 'testing'; ?> <html> <body> <script type="text/javascript"> var htmlString=<?php echo $htmlString; ?>; alert(htmlString); </script> </body> </html>
Вот учебник, который я использовал для этой цели:
Попробуй это:
<?php $htmlString= 'testing'; ?> <html> <body> <script type="text/javascript"> // notice the quotes around the ?php tag var htmlString="<?php echo $htmlString; ?>"; alert(htmlString); </script> </body> </html>
Когда вы сталкиваетесь с такими проблемами, как эта, хорошая идея – проверить ваш браузер на ошибки JavaScript. У разных браузеров есть разные способы показать это, но ищите консоль javascript или что-то в этом роде. Кроме того, проверьте источник своей страницы, как показано браузером.
Иногда новички путают о кавычках в строке: в части PHP вы назначили 'testing'
на $htmlString
. Это помещает строковое значение внутри этой переменной, но значение не содержит кавычек: они предназначены только для интерпретатора, поэтому он знает: oh, теперь идет строковый литерал .
Вам не хватает котировок вокруг вашей строки:
... var htmlString="<?php echo $htmlString; ?>"; ...
Все приведенные выше объяснения не работают, если вы работаете с файлами .js. Если вы хотите разобрать PHP в .js-файлы, вам необходимо внести изменения на свой сервер, изменив файл .htaccess, в котором находятся .js-файлы, используя следующие команды:
<FilesMatch "\.(js)$"> AddHandler application/x-httpd-php .js </FilesMatch>
Затем файлы test.js файла, содержащие следующий код, будут выполняться .JS на стороне клиента с разбором PHP на стороне сервера:
<html> <head> <script> function myFunction(){ alert("Hello World!"); } </script> </head> <body> <button onclick="myFunction()"><?php echo "My button";?></button> </body> </html>
Единственный правильный способ поместить данные на стороне сервера в сгенерированный код javascript:
<?php $jsString= 'testing'; ?> <html> <body> <script type="text/javascript"> var jsStringFromPhp=<?php echo json_encode($jsString); ?>; alert(jsStringFromPhp); </script> </body> </html>
С простыми кавычками содержимое вашей переменной не ускользает от HTML и javascript, поэтому оно уязвимо для атак XSS …
По аналогичным причинам я рекомендую использовать document.createTextNode()
вместо установки innerHTML
. Ofc. он медленнее, но более безопасен …
вам нужны цитаты вокруг строки в javascript
var htmlString="<?php echo $htmlString; ?>";