У меня есть файл JavaScript с жестко закодированной переменной BASEURL, это значение затем используется другими функциями в файле. Я хотел бы, чтобы это значение URL было задано динамически, так что мне не нужно вручную изменять его для разных установок. Можно ли вставить значение переменной PHP в файл JavaScript?
Вместо того, чтобы пытаться смешивать PHP с файлами javascript, вот что я делаю в HTML-шаблоне:
<head> <script> var BASEURL = "<?php echo base_url(); ?>"; </script> <script src="/path/to/my_script1.js"></script> <script src="/path/to/my_script2.js"></script> </head>
Это устанавливает переменную и позволяет всем вашим встроенным скриптам получить к ней доступ. base_url()
будет заменен любым методом, который вы используете для получения базового url с PHP.
Предположим, у вас есть JS-файл, написанный «на лету» PHP; file1.php
<?php header('Content-Type: application/javascript'); $var = $_GET['var1']; echo "jsvar = ".$var.";"; ?>
Исходный код на стороне клиента file1.php? Var1 = 10 будет тогда
jsvar=10;
Существует несколько способов:
Загрузите baseurl через AJAX, но, возможно, это замедляется, возможно, вам это нужно раньше.
пусть javascript-файл работает через php-парсер. Затем вы можете использовать встроенные эхо.
Самый удобный и простой способ – сделать <script>var baseurl = '...';</script>
в выводе html / php вашей страницы.
Вам нужно будет сделать файл файлом php, а не js-файлом. Оттуда вы можете включить любые теги PHP в файл для работы с вашей динамической магией. Ключ, чтобы все это работало в заголовках, которые вам нужно будет задать так:
<?php Header("content-type: application/x-javascript"); echo 'var js_var = ' . $php_var; ?> alert (js_var);
Этот метод можно использовать и для файлов CSS.
Сегодня Heredoc работал на меня:
<?php echo <<<ANYNAME <script LANGUAGE="JavaScript" type="text/javascript"> <!-- // code ... var myLatlng = new google.maps.LatLng($lat, $lon); // code cont. ... //--> </script> ANYNAME; ?>
http://php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc
php в html нет другого пути: <? php echo $ var; ?>