fay*_*aya 1 php ajax session jquery codeigniter
我在使用ajax post请求的服务器端检索会话中遇到问题.这是我的示例代码:
JavaScript的:
$(function() {
$('.jid_hidden_data').submit(function() {
var serialized = $(this).serialize();
var sUrl = "http://localhost/stuff";
$.ajax({
url: sUrl,
type: "POST",
data: serialized,
success: function(data) {
alert(data);
}
})
return false;
});
});
Run Code Online (Sandbox Code Playgroud)
CodeIngiter(PHP)方面:
function stuff()
{
$post_stuff = $this->input->post('my_stuff'); // WORKS PERFECTLY
$user_id = $this->session->userdata('user_id'); // RETURNS NULL
}
Run Code Online (Sandbox Code Playgroud)
如果注释返回NULL,则应返回用户会话数据,因为它确实存在.问题是什么?方法帖子没有得到cookie或什么?谢谢你的帮助!
更新:
为了澄清我有会话集与$ this-> session-> set_userdata($ data).在没有js/ajax的情况下发布它时我没有问题.我的意思是用简单的形式提交它工作正常.
使用不同的域名访问CI应用时遇到了类似的问题.即使这些域名指向同一个Web服务器,我也有两个单独的会话.
例如,考虑这个控制器:
class User extends Controller
{
function User()
{
parent::Controller();
$this->load->library('session');
}
function login()
{
$this->session->set_userdata('login_token', true);
echo 'finished logging in';
}
function logout()
{
$this->session->unset_userdata('login_token');
echo 'finished logging out';
}
function status()
{
if ($this->session->userdata('login_token'))
{
echo 'logged in';
}
else
{
echo 'not logged in';
}
}
}
Run Code Online (Sandbox Code Playgroud)
我按顺序访问以下URL.每个URL旁边都有相应的输出:
http:// localhost/app/user/login "已完成登录"
http:// localhost/app/user/status "登录"
http://127.0.0.1/app/user/status "未登录"
因此,当我访问localhost上的应用程序时,我所拥有的会话不会转移到127.0.0.1,即使我正在访问同一个Web服务器.
可能是您的AJAX脚本中的URL的域名与您正在测试的URL的域名不同?
| 归档时间: |
|
| 查看次数: |
7643 次 |
| 最近记录: |