我正在使用jQuery mobile和Codeigniter&amp ;;构建移动网络应用程序。 TankAuth。当用户登录或注销时,他们会从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
,但网址仍为auth/login
。
我该如何解决?如果您需要更多信息,请与我们联系。
答案 0 :(得分:2)
如果我对您的问题的理解是正确的,那么您使用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'));
}
答案 1 :(得分:1)
我在打开data-url="true"
标记时将<form>
添加到表单中,从那里一切正常。