Intereting Posts
Форма электронной почты более 20 значений Загрузите браузер Amazon AWS S3 на PHP (версия подписки AWS 4) Как проверить флажок в PHP Подключение к localhost / index.php через мой смартфон Laravel: Eloquent Как получить свойство модели, если имя столбца содержит тире? доступ к $ _SESSION при использовании file_get_contents в PHP Как изменить оболочку для php exec () Как сохранить вложения электронной почты на сервер в PHP? Получение ошибки «Авторизованный токен от поставщика услуг не соответствует предоставленным сведениям о токенах запроса» в трехзначной аутентификации в google api php получает правильную дату по неделям один год, используя strtotime PHP: как класс может ссылаться на свое собственное имя? Добавить как отдельные элементы корзины для продукта с пользовательскими данными в Woocommerce Как я вставляю только определенные части PHP-страницы, используя PHP PHPUnit проверяет метод, возвращающий свойство объектов Как создать ZIP-файл с помощью PHP и удалить его после загрузки пользователем?

Как поместить php внутри JavaScript?

Я пробовал (но его не работает):

<?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; ?>";