最初加载我的页面时,我的会话变量没有任何值。当用户登录系统时,php 变量会被设置一个值,但是 onclick 函数(在页面初始加载时构建)没有该参数的值 - 因此当用户单击按钮时,结果page 没有 session 变量。
我相信问题是当 dom 建立在页面的负载上时,该变量此时没有任何值,但是如何在用户登录后重建 dom 对象以包含该变量?或者这是不可能的?我只需要附加到 onclick 函数来添加最近登录的人的用户 ID。
PHP 在发送给用户之前生成站点,因此当登录不是通过 AJAX 时,您可以考虑将 session 变量直接放在页面代码中,如下所示:
<a class="mybtn" href="#" onclick="javascript:somefunction('<?php echo $_SESSION['myvar'];?>')">CLICK ME</a>
或通过 jquery 事件:
<script>
$('.mybtn').click(function(){
var myvar = '<?php echo $_SESSION['myvar'];?>';
do_something_with_myvar(myvar);
});
</script>
如果使用 ajax,只需从响应中定义变量:
$.post('login.php','login=xxx&pass=yyy',function(res){
window.myvar = res; // lets say that login function returns that variable
});
接着:
<script>
$('.mybtn').click(function(){
do_something_with_myvar(myvar);
});
</script>
您必须使用 AJAX 提交一个 POST/GET 以在后端触发一个 php 脚本,该脚本会根据您的需要更新您的会话,或者获取会话的值,或者您正在做的任何事情。一个例子...
简单的 jQuery 帖子:
$.post('my_session_info.php', function(data)
{
$('#my_element_id').val(data.sess_value);
},'json');
PHP端:
echo json_encode(array("sess_value"=>$_SESSION['my_session_var']));