Доступ var PHP из внешнего файла JavaScript

Я могу получить доступ к 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; ?>");
52
задан FFish 28 May 2010 в 01:13
поделиться

8 ответов

На самом деле вы не обращаетесь к нему, вы вставляете его в код 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);
93
ответ дан 7 November 2019 в 09:10
поделиться

Я заметил, что файлы .js запускаются через интерпретатор php. Что я не могу рекомендовать.

Что я действительно рекомендую, так это получить значения через AJAX и сделать так, чтобы файл PHP возвращал значение в файл JS. Это гораздо более чистый метод.

8
ответ дан 7 November 2019 в 09:10
поделиться

externaljs.js - это статический файл. Конечно, он не может получить доступ к данным PHP. Единственный способ передать PHP-данные в js-файл - это физически изменить файл, записав в него PHP-скрипт, хотя это в лучшем случае не очень удобное решение.

Правка в ответ на ответ Ólafur Waage: Я думаю, что запись в js-файл - это не единственный способ. Передача js через интерпретатор PHP никогда не приходила мне в голову (по уважительной причине).

1
ответ дан 7 November 2019 в 09:10
поделиться
<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, было бы намного чище

.
1
ответ дан 7 November 2019 в 09:10
поделиться

То, что вам, скорее всего, нужно, называется асинхронным JavaScript и XML (AJAX): http://www.w3schools.com/ajax/default.aspa

По сути, представьте себе возможность посылать сообщения от клиентского JavaScript вашим PHP-скриптам на сервере. В примере, который вы привели (externaljs.js), скрипт должен спросить у сервера, что такое $color, через HTTP. Вы также можете указать тег script на PHP-скрипт, который генерирует нужный вам JavaScript. Это зависит от того, что вам нужно сделать.

Это помогает иметь некоторое представление о проверке нечистоты, проверке данных и безопасности ;)

4
ответ дан 7 November 2019 в 09:10
поделиться

Вы не можете этого сделать и не пытайтесь, так как это не рекомендуемый подход. Однако вы можете передавать переменные php в качестве параметров функции в функцию, написанную на внешнем js

0
ответ дан 7 November 2019 в 09:10
поделиться

Прежде всего, вы должны понять, что ни одна программа не может иметь доступ к переменной другой программы.

Когда вы это поймете, остальное будет просто.
Вы можете либо установить переменную js в главном файле и затем включить в нее ваш внешний js, либо сделать этот внешний js динамическим, генерируемым PHP

4
ответ дан 7 November 2019 в 09:10
поделиться

Как говорят другие, javascript не имеет доступа к переменным php. Однако у него есть доступ к DOM. Итак, вы можете использовать php для добавления атрибутов к некоторым элементам страницы. И затем вы можете получить доступ к этим атрибутам с помощью javascript.

например.

полностью доступен для JavaScript

3
ответ дан 7 November 2019 в 09:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: