Подтвердить что ты не робот

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

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

<?php  
  $htmlString= 'testing';
?>
<html>
  <body>
    <script type="text/javascript">  
      var htmlString=<?php echo $htmlString; ?>;
      alert(htmlString);
    </script>
  </body>
</html>

Вот учебник, который я использовал для этой цели:

4b9b3361

Ответ 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; ?>";