Php 会话变量在我的脚本中不可访问

Php 会话变量在我的脚本中不可访问,php,javascript,jquery,Php,Javascript,Jquery,我有两个$\u SESSION变量无法在我的页面的任何脚本中访问,但当我使用echo显示它们的值时,它们肯定存在于同一页面的PHP代码中 我可以用下面的代码在jQuery中显示我想要的每个经典PHP变量,但当它们是$\u SESSION变量时,这是不可能的: <?php if( isset($_SESSION['id']) ){ echo $_SESSION['id']; // it displays the value } ?> <script type="t

我有两个
$\u SESSION
变量无法在我的页面的任何脚本中访问,但当我使用
echo
显示它们的值时,它们肯定存在于同一页面的PHP代码中

我可以用下面的代码在jQuery中显示我想要的每个经典PHP变量,但当它们是
$\u 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>

$(文档).ready(函数(){
$(“#某些#按钮”)。单击(函数(){
变量a=;
警报(a);
});         
}); 

老实说,我不明白为什么…

如果您使用的是PHP 5.2.0或更高版本,请更改以下内容:

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

var a = <?php echo json_encode($_SESSION['id']); ?>
var a=
这将在结果周围添加引号(如果需要),并根据需要为JavaScript转义字符

如果要使用PHP 5.2.0之前的版本,可以执行以下操作:

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

理想情况下,除非您知道
$\u SESSION['id']
将只包含安全字符,否则最好使用regexp和/或转义/替换函数
json_encode()
已经准备好了这些东西,所以它更可取。

我不知道示例是否在同一页中,但我怀疑您缺少了
session_start()
,因此如果是字符串,就不能使用session变量:

var a= "<?php echo $_SESSION['id']; ?>";
var a=”“;
它对我有效: 准备好并测试下面的代码,它与您的代码非常相似,但我认为您忘记调用jQueryAPI了

<?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>

$(文档).ready(函数()
{
$(“#某些#按钮”)。单击(函数(){
var a=“结果:”+;
//var a=“”;
警报(a);
});      
});

可能您只是缺少了一些引号?单击处理程序的“查看源代码”作为生成的javascript显示了什么?会话确实启动了->注释“//它显示了值”我想问题出在JS中。请提供完整的代码。但他在这里说--->echo$_SESSION['id'];/它显示值。@B4NZ41我说‘我不知道示例是否在同一页中……’:)