Я пытаюсь выяснить, как установить переменную session_id для использования во внешнем js-файле. Вот что у меня есть.
Файл php:
$output = '<script src="test.js"> var session_id = '.$_SESSION['id'].' </script>'; print $output;
Файл js:
alert(session_id);
С этим я получаю сообщение о том, что session_id не определен. Есть ли способ передать эту информацию?
Я знаю, что могу просто настроить скрытый ввод информации, но я думаю, что есть лучший способ сделать это.
Хмм, а как насчет:
$output = '<script type="text/javascript> var session_id = '.$_SESSION['id'].'</script><script type="text/javascript" src="test.js"></script>'; print $output;
?
Если вы включаете внешний JS-файл, вы не можете поместить код между тегами скрипта. Итак, вы хотите:
<script type="text/javascript"> var session_id = <?php print $_SESSION['id']; ?>; </script> <script type="text/javascript" src="test.js"></script>
Хотя вы можете обойти эту проблему, сделав идентификатор сеанса скрытым полем формы в своем HTML, а затем используя методы DOM в test.js, чтобы найти его.
Если вы можете иметь дело с session_id как глобальную переменную, то это сделает следующее:
<script> var session_id = '<?php echo $_SESSION['id'];?>' </script> <script src="test.js"></script>
Если вы хотите сделать эту переменную доступной только для файла javascript в закрытии и т. Д., Вы можете отправить файл js через парсер PHP или использовать параметры для вашего js-файла, но последний из них не очень легко доступен из javascript, см. Мой вопрос об этом .
Содержимое в <script>
выполняется только в том случае, если файл JavaScript не найден. Задайте переменные в отдельном <script>
до того, как не будет установлен файл:
<script> var session_id = '<?=$_SESSION['id']?>'; </script> <script src="test.js"> </script>
Другое решение состоит в том, чтобы PHP выполнял скрипт следующим образом:
var value1 = '{value1}'; var value2 = '{value2}'; ... // script goes here
{value1}
и {value2}
своими данными: if ($_GET["script"]) { $data = array( "value1" => $_SESSION["id"], # ie "value2" => $foo ); $script = file_get_contents($script . ".js"); foreach ($data as $key => $value) { $script = str_replace("{" . $key . "}", $value, $script); } header("Content-Type: text/javascript"); echo $script; exit(); }
<script type="text/javascript" src="?script=myscript"></script>