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

时间:2016-02-02 12:03:28

标签: javascript php session

我正在尝试将PHP会话变量放入外部JS文件中。在JS文件中,我想读取并使用会话变量的值,但也为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:意外的令牌;对于这一行:var test =;

需要帮助:)

4 个答案:

答案 0 :(得分:2)

您需要在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);

在上面,测试将= 2,因为php代码是在javascript之前执行的,所以js if block对php的影响为零,这基本上是:

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

答案 1 :(得分:1)

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

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

输出只是:

;

移动分号,你很好:

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

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

你不能在js文件中调用php代码... php将在文件扩展名为php时工作... 为此你需要做: 在php文件中创建/分配javascript变量/对象并在js文件中访问它