外部 JS 文件中的 PHP 会话变量为空


PHP Session variable in external JS file is null

我正在尝试将PHP会话变量放入外部JS文件中。在JS文件中,我想读取和使用会话变量的值,但也要为会话变量分配一个新值。

我试过这个:

PHP文件:

<?php session_start();?>
<html>
<head>
    <title></title>
    <script src="testjs.php" type="text/javascript"></script>
</head>
<body>
<?php $_SESSION['Count'] = 1; ?>
</body>
</html>

JavaScript 文件:

<?php header("Content-type: application/javascript"); ?>
alert("I am an alert box!");
var test  = <?php echo $_SESSION['Count'] ?>;
alert(test);
<?php $_SESSION['Count'] = 2 ?>
test  = <?php echo $_SESSION['Count'] ?>;
alert(test);

但是我一直得到一个空值,我的 chrome 检查器一直给我这个错误:未捕获的语法错误:意外的令牌; 对于此行:VaR 测试 = ;

需要帮助:)

您需要在 js(php) 文件中启动会话:

<?php
session_start();
header("Content-type: application/javascript"); ?>
alert("I am an alert box!");
var test  = <?php echo $_SESSION['Count'] ?>;
alert(test);
<?php $_SESSION['Count'] = 2 ?>
test  = <?php echo $_SESSION['Count'] ?>;
alert(test);

这是因为浏览器对此文件发出单独的请求,因为脚本标签与 php 包含不同。

注意像这样穿插 php 和 js 不是一个好主意。尽管上面的代码可以工作,但它会模糊服务器端(php)和客户端之间的心理界限,这可能导致如下代码损坏:

var abool = false;
var test  = <?php echo $_SESSION['Count'] ?>;
if(abool){
     <?php $_SESSION['Count'] = 2 ?>
}
var test  = <?php echo $_SESSION['Count'] ?>;
alert(test);

在上面,test will = 2,因为 php 代码是在 javascript 之前执行的,所以 js if 块对 php 的影响为零,本质上是:

<?php
echo $_SESSION['Count'];
$_SESSION['Count'] = 2;
echo $_SESSION['Count'];

查看您的php文件,您在此行的末尾有一个流氓;

<?php $_SESSION['Count'] = 2 ?>;

输出只是:

;

移动分号,你没问题:

<?php $_SESSION['Count'] = 2; ?>

编辑:看起来您没有在JS文件中打开会话...您没有使用require()include()所以我想您应该在发送标头之前从session_start()开始。

在访问 $_SESSION 变量之前,您需要调用 session_start();对<script>标签中的"php"文件的引用向服务器发出另一个单独的请求。

http://php.net/manual/en/function.session-start.php

你不能在js文件中调用php代码...当文件扩展名为PHP时,PHP将起作用...为此,您需要执行以下操作:在PHP文件中创建/分配JavaScript变量/对象,并在JS文件中访问它