Как я могу передать переменную PHP в JavaScript? - PullRequest
3 голосов
/ 07 сентября 2010

Я хочу использовать переменную PHP в качестве переменной javascript - в частности, я хочу использовать переменную PHP session_id (); и использовать это как переменную JavaScript.

<?php
$php_var = session_id();
?>
<script language="JavaScript" type="text/javascript">
js_var = <?php echo($php_var ?>;
</script>

Кажется, это должно работать для меня, но разве никто не может предложить лучший способ?

Ответы [ 4 ]

13 голосов
/ 07 сентября 2010

Лучший метод, который я могу придумать, выглядит следующим образом:

<?php
$php_var = session_id();
?>
<script type="text/javascript">
    var js_var = <?php echo json_encode($php_var); ?>;
</script>

Функция PHP * json_encode всегда создает допустимый JavaScript, что не гарантируется, если вы просто выводите случайные значения. Если вы решите не использовать json_encode(), вам следует как минимум заключить в кавычки значение php, чтобы избежать синтаксических ошибок. Будьте в курсе побега!

<?php
$php_var = session_id();
?>
<script type="text/javascript">
   var js_var = "<?php echo $php_var; ?>";
</script>
3 голосов
/ 07 сентября 2010

Это просто отлично.Убедитесь, что если переменная, которую вы выводите, является строкой, в которую вы помещаете кавычки, и избегаете внутри нее любых кавычек, новых строк и т. Д.Кроме того, не забудьте var до js_var.

2 голосов
/ 07 сентября 2010

Кажется, вы открыли скобку в вызове echo, но не закрыли ее.Кроме того, вы должны поставить точку с запятой после него.Вы также забыли кавычки (как говорит Гордон в комментарии ниже).

<?php
$php_var = session_id();
?>
<script language="JavaScript" type="text/javascript">
js_var = "<?php echo($php_var); ?>";
</script>

PS Вы можете использовать меньше кода, заменив echo на символ '=':

js_var="<?=$php_var?>";

1 голос
/ 07 сентября 2010

Это не работает, потому что ваш фрагмент содержит ошибки, должно быть:

<?php
$php_var = session_id();
?>
<script language="JavaScript" type="text/javascript">
js_var = <?php echo $php_var ?>;
</script>
...