会话变量无法在动态javascript文件中访问

时间:2013-07-25 08:35:22

标签: php javascript session dynamic session-variables

我知道我的问题很奇怪,但这是我的情况。我用

打电话给 javascript

<script src="js/jscript.php"></script>

另一方面,我在jscript.php中编写javascript

<?php 
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
header("Content-Type: text/javascript");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Pragma: no-cache");
?>$(document).ready(function(){
....
....
....
alert('hello world!');//all my javascript stuff

<?php
echo $_SESSION['user_id'];  //echo nothing
echo $_SESSION['user_email']; //echo nothing
?>

});

然后我测试了我的浏览器,文件调用和alert('hello world!')这样的调用没有问题但是直到我尝试从jscript.php访问会话变量,它全部为空..我确实正确设置了这些变量

2 个答案:

答案 0 :(得分:1)

我不确定这是否可行。

我认为更好的方法是对PHP页面进行ajax调用,以任何你想要的形式获取数据(json,或者只是echo $ var ...),然后用它做一些事情。

ex with jquery:

<script>
    $.ajax({
        url: 'mypage.php',
    }).done(function(msg) {
          // Do something with msg here
    });
</script>

和mypage.php可能像:

<?php

$response = array();
$response['user_id'] = $_SESSION['user_id'];
$response['user_email'] = $_SESSION['user_email'];
echo json_encode($response);

?>

当进行ajax调用时,php页面将创建一个数组,用你需要的会话变​​量填充它,并用json_encode以json形式将它返回到你的脚本。 你可以将它作为var .done方法获得,并用它做任何你想做的事。

答案 1 :(得分:0)

添加会话开始jscript.php的一个开始解决了我的问题

session_start();

希望能帮助别人。