Dostęp do PHP var z zewnętrznego pliku javascript
Mogę uzyskać dostęp do var PHP z Javascript w ten sposób:
<?php
$fruit = "apple";
$color = "red";
?>
<script type="text/javascript">
alert("fruit: " + "<?php echo $fruit; ?>"); // or shortcut "<?= $fruit ?>"
</script>
Ale co jeśli chcę użyć zewnętrznego pliku JS:
<script type="text/javascript" src="externaljs.js"></script>
Externaljs.js:
alert("color: " + "<?php echo $color; ?>");
11 answers
Tak naprawdę nie masz do niego dostępu, wstawiasz go do kodu javascript podczas serwowania strony.
Jeśli jednak twój inny javascript nie jest z zewnętrznego źródła, możesz zrobić coś takiego:
<?php
$color = "Red";
?>
<script type="text/javascript">var color = "<?= $color ?>";</script>
<script type="text/javascript" src="file.js"></script>
A następnie w pliku.js używa koloru tak:
alert("color: " + color);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-18 05:00:09
Możesz również uzyskać dostęp do danych ze skryptu php w Javascript (tutaj użyję jQuery) w następujący sposób
Utwórz ukryte pole wejściowe w pliku php w ten sposób
<input type="hidden" id="myPhpValue" value="<?php echo $myPhpValue ?>" />
W Twoim pliku javascript:
var myPhpValue = $("#myPhpValue").val();
//From here you can the whaterver you like with you js Value
if(myPhpValue != ''){
//Do something here
}
To też da radę:)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-19 15:32:04
To, co widziałem, to pozwolić .Pliki js są uruchamiane przez interpreter php. którego nie mogę polecić.
Zalecam pobranie wartości przez AJAX i zwrócenie wartości przez plik PHP do pliku JS. Co jest o wiele czystszą metodą.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-28 12:26:37
Po pierwsze musisz zrozumieć, że żaden program nie może mieć dostępu do zmiennej innego programu.
Kiedy zdasz sobie z tego sprawę, reszta jest prosta.
Możesz skonfigurować zmienną js w głównym pliku, a następnie dołączyć zewnętrzny js, lub sprawić, że ten zewnętrzny js będzie dynamiczny, wygenerowany również przez PHP
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-28 12:19:57
To, czego prawdopodobnie chcesz, nazywa się asynchronicznym JavaScript i XML (AJAX): http://www.w3schools.com/ajax/default.aspa
Zasadniczo wyobraź sobie możliwość wysyłania wiadomości Od Klientów JavaScript do skryptów PHP na serwerze. W podanym przykładzie (externaljs.js), skrypt zapyta serwer co to jest $color, poprzez HTTP. Znacznik script można również skierować na skrypt PHP, który generuje żądany JavaScript. To zależy od tego, czego potrzebujesz zrób.
To pomaga mieć trochę zrozumienia sprawdzania skażenia, weryfikacji danych i bezpieczeństwa;)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-28 12:21:46
Jak mówią inni, javascript nie ma dostępu do zmiennych php. Ma jednak dostęp do DOM. Możesz więc użyć php, aby dodać atrybuty do jakiegoś elementu strony. Następnie możesz uzyskać dostęp do tych atrybutów za pomocą javascript.
Np. {[0] } jest całkowicie Dostępny dla javascript
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-28 12:25:09
Externaljs.js jest plikiem statycznym. Oczywiście nie ma dostępu do danych PHP. Jedynym sposobem, aby przekazać dane PHP do pliku js byłoby fizycznie zmienić plik, zapisując do niego w skrypcie PHP, chociaż jest to w najlepszym razie bałagan rozwiązanie.
Edit w odpowiedzi na odpowiedź: domyślam się, że zapis do pliku js nie jest sposobem Tylko . Przekazywanie js przez interpreter PHP nigdy nie przyszło mi do głowy (nie bez powodu).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-28 12:16:39
<script type="text/javascript" src="externaljs.js"></script>
Możesz zmienić na
<script type="text/javascript" src="externaljs.php"></script>
A skrypt PHP mógłby tak pisać JavaScript:
<?php
$fruit = "apple";
echo 'var fruit = '.json_encode($fruit);
...
Chociaż używanie Ajaxu, jak powiedział Sepehr Lajevardi, byłoby dużo czystsze
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-28 12:28:00
Don rozwiązanie jest dobre, ponadto jeśli chcesz użyć tablicy php w zewnętrznym javascipt to może Ci pomóc:
PHP:
<?php
$my_php_array = [];
?>
HTML:
<script type="text/javascript"> var my_js_array = <?php echo json_encode($my_php_array);?> ; </script>
<script src = "../public/js/my-external-js.js"></script>
Javasript: (możesz teraz używać tablicy jak zwykłej tablicy Javascript)
my_js_array[0]
my_js_array.length
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-22 18:56:12
Nie możesz tego zrobić i nie próbuj, ponieważ nie jest to zalecane podejście, jednak możesz przekazać zmienne php jako parametry funkcji do funkcji napisanej w zewnętrznym js
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-28 12:17:59
2017-2018 i powyżej rozwiązanie:
Ponieważ nikt jeszcze tego nie wymyślił i chyba nikt nie pomyślał o połączeniu funkcji base64_encode
i json_encode
, można nawet wysłać zmienne tablicy PHP w ten sposób:
Indeks.php
<?php
$string = "hello";
$array = ['hi', 'how', 'are', 'you'];
$array = base64_encode(json_encode($array));
Następnie możesz po prostu załadować żądany plik js z parametrem dla ciągu zapytania, takiego jak:
echo '<script type="text/javascript" src="js/main.php?string='.$string.'&array='.$array.'">';
Wtedy js/main.php
będzie wyglądać na przykład tak. Możesz przetestować swoje zmienne w ten sposób:
Js/main.php
<?php
if ($_GET['string']) {
$a = $_GET['string'];
}
if ($_GET['array']) {
$b = $_GET['array'];
}
$b = json_decode(base64_decode($b));
echo 'alert("String $a: + '.$a.'");';
echo 'alert("First key of Array $array: + '.$b[0].'");';
exit();
?>
Po otwarciu index.php
zostaną wyświetlone następujące dane. Więc widzisz, nie otwierasz js/main.php
i nadal masz z niego funkcjonalność javascript.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-06 07:40:27