Я могу получить доступ к var PHP с JavaScript как это:
<?php
$fruit = "apple";
$color = "red";
?>
<script type="text/javascript">
alert("fruit: " + "<?php echo $fruit; ?>"); // or shortcut "<?= $fruit ?>"
</script>
Но что, если я хочу использовать внешний файл JS:
<script type="text/javascript" src="externaljs.js"></script>
externaljs.js:
alert("color: " + "<?php echo $color; ?>");
На самом деле вы не обращаетесь к нему, вы вставляете его в код javascript при обслуживании страницы.
Однако если ваш другой javascript не из внешнего источника, вы можете сделать что-то вроде:
<?php
$color = "Red";
?>
<script type="text/javascript">var color = "<?= $color ?>";</script>
<script type="text/javascript" src="file.js"></script>
и затем в файле.js использовать цвет так:
alert("color: " + color);
Я заметил, что файлы .js запускаются через интерпретатор php. Что я не могу рекомендовать.
Что я действительно рекомендую, так это получить значения через AJAX и сделать так, чтобы файл PHP возвращал значение в файл JS. Это гораздо более чистый метод.
externaljs.js - это статический файл. Конечно, он не может получить доступ к данным PHP. Единственный способ передать PHP-данные в js-файл - это физически изменить файл, записав в него PHP-скрипт, хотя это в лучшем случае не очень удобное решение.
Правка в ответ на ответ Ólafur Waage: Я думаю, что запись в js-файл - это не единственный способ. Передача js через интерпретатор PHP никогда не приходила мне в голову (по уважительной причине).
<script type="text/javascript" src="externaljs.js"></script>
Вы можете изменить его на
<script type="text/javascript" src="externaljs.php"></script>
И PHP скрипт может просто писать JavaScript как это :
<?php
$fruit = "apple";
echo 'var fruit = '.json_encode($fruit);
...
Хотя использование AJAX, как сказал Sepehr Lajevardi, было бы намного чище
.То, что вам, скорее всего, нужно, называется асинхронным JavaScript и XML (AJAX): http://www.w3schools.com/ajax/default.aspa
По сути, представьте себе возможность посылать сообщения от клиентского JavaScript вашим PHP-скриптам на сервере. В примере, который вы привели (externaljs.js), скрипт должен спросить у сервера, что такое $color, через HTTP. Вы также можете указать тег script на PHP-скрипт, который генерирует нужный вам JavaScript. Это зависит от того, что вам нужно сделать.
Это помогает иметь некоторое представление о проверке нечистоты, проверке данных и безопасности ;)
Вы не можете этого сделать и не пытайтесь, так как это не рекомендуемый подход. Однако вы можете передавать переменные php в качестве параметров функции в функцию, написанную на внешнем js
Прежде всего, вы должны понять, что ни одна программа не может иметь доступ к переменной другой программы.
Когда вы это поймете, остальное будет просто.
Вы можете либо установить переменную js в главном файле и затем включить в нее ваш внешний js, либо сделать этот внешний js динамическим, генерируемым PHP
Как говорят другие, javascript не имеет доступа к переменным php. Однако у него есть доступ к DOM. Итак, вы можете использовать php для добавления атрибутов к некоторым элементам страницы. И затем вы можете получить доступ к этим атрибутам с помощью javascript.
например.