как установить переменную для внешнего файла javascript?

Я пытаюсь выяснить, как установить переменную 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 выполнял скрипт следующим образом:

  • Создайте файл JS, подготовленный с необходимыми определениями переменных:
 var value1 = '{value1}'; var value2 = '{value2}'; ... // script goes here 
  • С помощью PHP прочитайте файл и замените теги {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(); } 
  • Затем вы можете вызвать свой «парсер» PHP следующим образом:
 <script type="text/javascript" src="?script=myscript"></script>