在 AJAX 调用的 zend 控制器操作中正确设置会话
Setting session properly in zend controller action on AJAX call
我有一个像下面这样的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......如果你们明白我想说什么?我在这里做错了什么??如何解决这个问题?
试试这个
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
我会选择鹰眼
您将在数据中获取会话值,但您可以使用 $.post jquery 调用。
<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;
}
也许是因为$.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
变量访问它。
相关文章:
- 正在Javascript响应中设置会话变量
- 在 AJAX 调用的 zend 控制器操作中正确设置会话
- 设置会话变量并从Jquery更改页面
- 单击按钮即可设置会话
- 根据页面中设置的值在php中设置会话
- Chrome和Firefox不会取消设置会话数组,但IE和Safari会取消设置
- 在MVC视图和DateTimePicker中设置会话变量
- 如何在javascript中设置会话值
- jQuery和ajax在PHP中设置会话变量
- 在Express中手动设置会话ID
- 如何设置会话 Cookie 以保护和使用 CSRF 令牌
- 如何在 jquery 中设置会话变量
- 在 PHP 中关闭网页时如何取消设置会话
- 如何在页面关闭时取消设置会话
- 使用类单击时如何设置会话[“类型”]
- 如何使用挖空从虚拟机设置会话变量
- 如何使用JavaScript设置会话变量
- 使用AJAX在PHP中设置会话变量
- 在刷新页面之前不会设置会话属性
- 设置会话变量并执行javascript函数