我正在用jQuery手机和Codeigniter & TankAuth构建一个移动web应用程序。当用户登录或注销时,他们将从TankAuth登录/注销控制器重定向到我选择的页面。问题是,当ajax导航加载有问题的页面时,TankAuth控制器的URL保持不变。
其中涉及到相当多的代码,因此我将尽我所能对其进行描述:
假设变量$this->session->flashdata('prev_page')为page1。
第一次通过auth/login调用TankAuth登录控制器,加载登录表单视图。
表单被提交给同一个控制器,然后由该控制器进行处理,并重定向到必要的页面:
if ($this->tank_auth->login(
$this->form_validation->set_value('login'),
$this->form_validation->set_value('password'),
$this->form_validation->set_value('remember'),
$data['login_by_username'],
$data['login_by_email'])) {// success
redirect($this->session->flashdata('prev_page'));
}jQuery mobile通过AJAX加载page1,但是URL仍然是auth/login。我该如何解决这个问题?如果你需要更多的信息,请告诉我。
发布于 2013-05-17 01:13:47
我在打开<form>标签的表单中添加了data-url="true",从那里开始一切都很正常。
发布于 2013-05-17 00:07:51
如果我对您的问题的理解是正确的,那么您正在使用ajax对移动用户进行身份验证,而对大屏幕用户使用普通的重定向方法。
如果这就是情况,那么这将会产生魔力:
if ($this->tank_auth->login(
$this->form_validation->set_value('login'),
$this->form_validation->set_value('password'),
$this->form_validation->set_value('remember'),
$data['login_by_username'],
$data['login_by_email']))
{// success
$this->load->library('user_agent');
if($this->agent->is_mobile()) {
echo $this->session->flashdata('prev_page');
//Now this value 'll reach ajax when authentication is success.
//Inside Ajax:
//success: function(data) {
// validate data for checking if user is logged in or not.
// if(login_is_success)
// window.location.href = data;
//}
}
else
redirect($this->session->flashdata('prev_page'));
}https://stackoverflow.com/questions/16591584
复制相似问题