Как поместить php внутри JavaScript?
Я пробовал (но не работал):
<?php
$htmlString= 'testing';
?>
<html>
<body>
<script type="text/javascript">
var htmlString=<?php echo $htmlString; ?>;
alert(htmlString);
</script>
</body>
</html>
Вот учебник, который я использовал для этой цели:
Ответы
Ответ 1
Попробуйте следующее:
<?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, теперь идет строковый литерал.
Ответ 2
Вам не хватает кавычек вокруг вашей строки:
...
var htmlString="<?php echo $htmlString; ?>";
...
Ответ 3
Все приведенные выше объяснения не работают, если вы работаете с файлами .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>
Ответ 4
Единственный правильный способ поместить данные на стороне сервера в сгенерированный код 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. он медленнее, но более безопасен...
Ответ 5
вам нужны кавычки вокруг строки в javascript
var htmlString="<?php echo $htmlString; ?>";