我有一个像下面这样的ajax调用:
$.post("/user/signindo",{'username':username,"password":password},function(data){
//doing something with the response
// Now I need to access the session variable
<?=echo("$_Session['id']")?>
}
并且控制器中的操作看起来像这样
public function signindo()
{
$_Session['id'] = 1; // this value is assigned dynamically when the user logs in
// example of setting session to 1
}
奇怪的是,一旦用户登录,该值将被分配正确的ID ...下次我与不同的用户登录时,ID与前一个用户保持相同...下次我使用第三个用户登录,我获得了第二个用户的ID ...如果你们了解我想说的话?我在这做错了什么?如何解决这个问题?
答案 0 :(得分:0)
也许是因为$.post
是异步的,并且在设置会话之前调用了javascript函数,因此是旧的id。
使用$.ajax
时,它应该有效。
$.ajax({
url: '/user/signindo',
data: {'username':username,"password":password},
async: false,
success: function(data) {
// maybe do something with data
}
});
您还可以在PHP函数中返回id,并通过data
变量访问它。
答案 1 :(得分:0)
我会选择EagleEye
您将获得数据中的会话值,但您可以使用$ .post jquery call ..
<script>
$.post("/user/signindo",{username:username,password:password},function(data){
//case1 - output
//console.log(data);//1
//case2 - output
console.log(data);//{id:1,name:joe}
console.log(data.id);//1
console.log(data.name);//joe
}
</script>
在登录中我不知道会话如何在zend中工作,但在corePHP中它如下所示..
<?php
public function signindo()
{
//case 1
//session_start();
//$_SESSION['id'] = 1; //Not in small $_Session
//echo $_SESSION['id'];
//case 2
$test_array = array('id'=>1,'name'=>'joe');
echo json_encode($test_array);
exit;
}
答案 2 :(得分:0)
试试这个
public function signindo()
{
$namespace = new Zend_Session_Namespace();
$namespace->id = 1;
echo $namespace->id;
exit;
}
客户方:
$.post("/user/signindo",{'username':username,"password":password},function(data){
//data will be your session id
}
阅读以下链接,了解有关Zend会话的详细信息
http://framework.zend.com/manual/1.12/en/zend.session.basic_usage.html