繁体   English   中英

无法获取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值时, 始终使用json_encode:

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

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

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

例如

some-file.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']; ?>"; 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM