Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Codeigniter重定向不使用jQuery mobile更新url_Php_Jquery_Codeigniter_Redirect_Jquery Mobile - Fatal编程技术网

Php Codeigniter重定向不使用jQuery mobile更新url

Php Codeigniter重定向不使用jQuery mobile更新url,php,jquery,codeigniter,redirect,jquery-mobile,Php,Jquery,Codeigniter,Redirect,Jquery Mobile,我有一个登录控制器,当用户有效时,它会重定向到我的索引页。重定向可以工作,但在索引页面上,url仍然是验证方法的url,例如:login/validate\u login/。如果我单击索引页上的链接,然后尝试返回浏览器历史记录,浏览器会将我指向验证方法,而不是索引页 我该如何解决这个问题 我尝试过使用重定向同时刷新和定位,但都没有成功 我怀疑这是jQuery mobile的ajax调用的问题,但我不确定 谢谢你的帮助。 问候 注意:我会在索引页上发布url的图像,但我不允许发布,因为我是新用户

我有一个登录控制器,当用户有效时,它会重定向到我的索引页。重定向可以工作,但在索引页面上,url仍然是验证方法的url,例如:login/validate\u login/。如果我单击索引页上的链接,然后尝试返回浏览器历史记录,浏览器会将我指向验证方法,而不是索引页

我该如何解决这个问题

我尝试过使用重定向同时刷新和定位,但都没有成功

我怀疑这是jQuery mobile的ajax调用的问题,但我不确定

谢谢你的帮助。 问候

注意:我会在索引页上发布url的图像,但我不允许发布,因为我是新用户

我的验证方法:

    function validate_login($controller='',$method='') {
    $this->load->library('form_validation');
    $this->load->model('workout_model');

    $this->form_validation->set_rules('ex_password','Koden','trim|required|min_length[4]|max_length[4]|callback_pw_check');


    if($this->form_validation->run() == FALSE) {
        $this->index();
    } else {
        if($query = $this->workout_model->validate()) {

            $data = array(
            'is_logged_in' => true,
            'user_id' => $query->id,
            'current_exercise' => '1'
            );

            $this->session->set_userdata($data);

            if($controller=='' || $method=='') {
                redirect("workout");
            } else {
                redirect($controller."/".$method);
            }
        } else {
            $this->index();
        }
    }
}

有两种方法可以处理这个问题,它与AJAX无关,而是CI的工作方式。最快最简单的方法就是改变

$this->index();

这样做实际上并不是重定向,而是调用当前URL上的index函数,即validate_login。这样做的问题是,如果登录失败,它仍将保留在validate_登录URL上,以便下次尝试


处理它的最佳方法是从控制器中的索引函数调用实际的validate_login函数,而不是表单本身。因此,将表单发送回index,让index控制器检查表单数据,如果为true,则调用validate_login()。这样,您就不会真正离开索引页面,它只会处理登录表单是否已提交。解决URL问题。实际上,我对所有提交表单以进行任何形式验证的页面都是这样做的。

要正确更新URL,似乎有两件事是必要的:使用重定向(…)而不是方法调用,以及禁用jQuery Mobile ajax调用。有两种方法:添加和属性到最初指向方法的链接

<a href='.../validate_login/...' data-ajax='false'>...</a>


或者,通过编辑设置(未测试)全局禁用ajax调用。

当您通过HTML表单(如登录注册)提交时。然后您还有某种仪表板重定向,您需要像这样更新表单标记。当我使用Codeigniter和jquery mobile usedata ajax=“false”时会发生这种情况。


现在看起来可能有点开销,但你稍后会感谢我的。非常好的帖子。然而,这只是一个用于记录我的健身锻炼的小应用程序,所以我想改天我会尝试一下。这个问题很烦人,因为它是“beta”版本唯一剩下的东西…谢谢你的回复。我没法让它工作。。更改$this->index();不起作用,将validate_login()代码放入索引()也不起作用。也许我还不够清楚。我有两个控制器,一个是训练,另一个是训练。在训练的构造函数中,我调用了一个名为is_logged_In()的方法,该方法检查是否设置了userdata。如果没有,我将重定向到训练登录控制器。友善的regards@RickCalder验证错误怎么办?当重定向时,错误将是lostlol,6年前的答案><如果您有错误,您可以按照文档进行重定向,并显示错误和以前的formdata。
<a href='.../validate_login/...' data-ajax='false'>...</a>
<form id="login-box" method="post" action="<?php echo base_url('index.php/auth/login_user'); ?> " data-ajax="false">