我的页面的任何脚本都无法访问两个$_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>
我不明白为什么老实说......
答案 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>