在我的脚本中无法访问会话变量

时间:2012-03-04 22:22:31

标签: php javascript jquery

我的页面的任何脚本都无法访问两个$_SESSION变量,但是当我使用echo显示它们的值时,它确定它们存在于同一页面的PHP代码中。

我可以使用以下代码在jQuery中显示我想要的每个经典PHP变量,但是当它们是$_SESSION变量时它们是不可能的:

<?php if( isset($_SESSION['id']) ){ 
    echo $_SESSION['id'];   // it displays the value
} ?>

<script type="text/javascript">
$(document).ready(function() {  

$("#some_button").click(function(){
    var a = <?php echo $_SESSION['id']; ?>; 
    alert(a);
});         
}); 
</script>

我不明白为什么老实说......

4 个答案:

答案 0 :(得分:3)

如果您使用的是PHP 5.2.0或更高版本,请更改此:

var a = <?php echo $_SESSION['id']; ?>; 

对此:

var a = <?php echo json_encode($_SESSION['id']); ?>

如果需要,将在结果周围加上引号,并根据需要转义JavaScript的字符。

如果你想使用早于PHP 5.2.0的东西,你可以这样做:

var a = '<?php echo $_SESSION['id']; ?>'

理想情况下,除非您知道$_SESSION['id']只有安全字符,否则您需要使用正则表达式和/或转义/替换函数。 json_encode()已经有了这些东西,所以最好。

答案 1 :(得分:2)

我不知道该示例是否在同一页面中,但我怀疑您丢失了session_start(),因此您无法使用会话变量

答案 2 :(得分:1)

如果是一个字符串:

var a= "<?php echo $_SESSION['id']; ?>";

答案 3 :(得分:1)

这对我有用: 准备好并测试下面的代码,它与你的代码非常相似,但我认为你忘了调用jquery api。

<?php>
session_start();
$_SESSION['id'] = 1;

if ( isset($_SESSION['id']) )
{ 
    echo $_SESSION['id'];
    echo json_encode($_SESSION['id']);
}
?>

<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
$(document).ready(function() 
{
    $("#some_button").click(function(){
            var a = "Result: "+ <?php echo json_encode($_SESSION['id']); ?>;
        //var a="<?php echo $_SESSION['id']; ?>";
            alert(a);
    });      
});
</script>

<form method="post" name="form" action="#">
    <input type="submit" id="some_button" value="Clique" />
</form>