使用Codeigniter和jQuery mobile处理重定向?

时间:2013-05-16 15:27:48

标签: codeigniter jquery jquery-mobile tankauth

我正在使用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。 我该如何解决?如果您需要更多信息,请与我们联系。

2 个答案:

答案 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>添加到表单中,从那里一切正常。