-1

$_SESSION['SESS_USER_TYPE']在我的 php 文件中调用了一个会话变量,该变量设置为 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'.
4

3 回答 3

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。

于 2012-08-29T03:56:23.297 回答
0

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

例如

一些文件.php

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

<!-- snip -->

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

正如其他人所说,还要在 JS 字符串周围加上引号。

于 2012-08-29T03:58:20.657 回答
0

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

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

var user_type = "<?php echo $_SESSION['SESS_USER_TYPE']; ?>"; 
于 2012-08-29T03:59:22.840 回答