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

时间:2012-08-29 03:53:59

标签: php 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'.

3 个答案:

答案 0 :(得分:4)

该会话变量的值究竟是什么?如果它是一个字符串,则表示您生成了无效的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。

答案 1 :(得分:0)

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

例如

一些-file.php

<?php session_start() ?>
<!DOCTYPE html>
<html>

<!-- snip -->

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

正如其他人所说的那样,JS字符串也包括引号。

答案 2 :(得分:0)

  

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

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

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