Как передать значение переменной из php-скрипта в javascript?

Доброго времени суток!

Подскажите, есть ли способ передавать значение переменной между скриптами php и js, если они лежат в отдельных файлах? Например, есть test.php в нем $a="hello world!";

Как получить значение переменной $a из пхп в script.js?
alert(" переменная из test.php ");  //сюда нужно подставить хелло ворлд из пхп

Если все в одном файле, то понятно, можно сделать просто, например alert("<?=$a?>"); а если js отделен?
  • Вопрос задан
  • 32433 просмотра
Пригласить эксперта
Ответы на вопрос 5
nowm
@nowm
Первый способ: Отдельный AJAX-запрос к PHP-файлу, который вернёт что-нибудь вроде JSON-данных, которые потом будут доступны из JS.

Второй способ: В PHP-файле можно определить какую нибудь переменную во время генерации страницы, а потом из любых скриптов к ней обращаться. Например так:

PHP-файл:
<?php
$a = 'text for js_variable';
?>
<!DOCTYPE html>
<html>
  <head>
    <script>
      //Определяется переменная, которая будет доступна для 
      // всех JavaScript, подключаемых на данной странице
      var js_variable = '<?php echo $a; ?>';
    </script>
    <!-- 
      В файле /scripts/myscript.js происходит обращение 
      к переменной js_variable 
    -->
    <script src="/scripts/myscript.js"></script>
  </head>
  <body>blah-blah-blah</body>
</html>


Файл /scripts/myscript.js:
// Выскочит алерт с текстом «text for js_variable».
alert(js_variable);


Вот. В HEAD-части HTML-страницы вы определяете переменную, которая будет доступна для остального JS-кода. Главное — нужно её определять до того, как будут подключены скрипты, которые будут её использовать.

Третий способ: Если ваш web-сервер — Apache, то можно добавить в .htaccess в корне сайта такие строки:
AddType application/x-httpd-php .js
AddHandler x-httpd-php5 .js

<FilesMatch "\.js$">
SetHandler application/x-httpd-php
</FilesMatch>


Тогда вы сможете прямо в JS-файлах выполнять PHP-код. Но выполняться он будет только в тех JS-файлах, которые находятся в папке с сайтом. Если будут загружаться скрипты со сторонних ресурсов, там PHP-код работать не будет.
Ответ написан
Комментировать
@mfred
<? $a="hello world!";?>
<script>var a = <?=$a?>;</script>

естественно это задавать до подключения скрипта, а в js уже использовать alert(a);
Ответ написан
IgorO2
@IgorO2
73
Используй куки или сессии
Ответ написан
4ikist
@4ikist
переменную: var param = '<?=$param;?>';
массив: var object = <?=json_encode($array);?>;
Ответ написан
Комментировать
Satanpit
@Satanpit
Front-end developer
Вы можете прописать в .htaccess парсинг PHP в JS файлах
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы