我的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'.
答案 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']; ?>";