繁体   English   中英

外部JS文件中的PHP Session变量为null

[英]PHP Session variable in external JS file is null

我正在尝试将PHP会话变量添加到外部JS文件中。 在JS文件中,我想读取和使用session变量的值,但还要为Session变量分配一个新值。

我尝试了这个:

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检查器一直在给我这个错误:Uncaught SyntaxError:Unexpected token; 对于这一行:var test =;

需要帮助 :)

您需要在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 include不同。

注意像这样散布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将= 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_start(); 在访问$ _SESSION变量之前。 <script>标记中引用“ php”文件会向服务器发出另一个单独的请求。

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

您无法在js文件中调用php代码...当文件扩展名为php时php可以工作...为此,您需要执行以下操作:在php文件中创建/分配javascript变量/对象并在js文件中访问它

暂无
暂无

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

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