无法获取php会话变量以在javascript中设置var


Cannot get php session variable to set a var in javascript

我的php文件中有一个名为$_SESSION['SESS_USER_TYPE']的会话变量,该变量设置为2个字符的字符串。php脚本重定向到一个HTML文件,我想在那里将php会话变量转换为javascript变量。

我在javascript中使用它,如下所示,但在javascript变量中一无所获。

var user_type = <?php echo $_SESSION['SESS_USER_TYPE']; ?>; 

这不起作用。

除了从其他用户收到的输入之外,我还尝试了以下操作:

var user_type = '<?php echo json_encode($_SESSION['SESS_USER_TYPE']) ?>';

Javascript向上面返回一个语法错误。

然后我尝试了

user_type = "<?php echo json_encode($_SESSION['SESS_USER_TYPE']) ?>";

这不会在Javascript中产生错误。但是,它会将以下值返回给user_type,即:

<?php echo json_encode($_SESSION['SESS_USER_TYPE']) ?>
$_SESSION['SESS_USER_TYPE'] is set to the string 'WO'.

会话变量中的值究竟是多少?如果它是一个字符串,则表示您正在生成无效的Javascript并导致语法错误,例如:

<?php
$x = 'hello';
?>
<script type="text/javascript">
var x = <?php echo $x; ?>;
</script>

会给你

var x = hello;

可能会把事情搞砸。

将PHP数据转储到Javascript代码块中时,特别是动态创建Javascript值时,ALWAYS使用json_encode:

var x = <?php echo json_encode($x) ?>;

这将保证您生成语法有效的JS。

包含该JavaScript片段的文件必须由PHP解析。最简单的方法是使用.php扩展。PHP变量和语句在非PHP文件中不起作用(除非您将Web服务器配置为这样做,但这可能超出了这个问题的范围)。要使用会话变量,还必须运行session_start()

例如

一些文件.php

<?php session_start() ?>
<!DOCTYPE html>
<html>
<!-- snip -->
<script>
    var user_type = '<?php echo $_SESSION['SESS_USER_TYPE']; ?>';
</script>

正如其他人所说,还包括JS字符串周围的引号。

php脚本重定向到一个HTML文件,我想在那里将php会话变量转换为javascript变量。

如何在HTML页面中获取会话变量的值??你需要PHP页面。在php页面中,你可以这样做

var user_type = "<?php echo $_SESSION['SESS_USER_TYPE']; ?>";