【问题标题】:How to redirect on a successful AJAX form submission (PHP - CodeIgniter)如何重定向成功的 AJAX 表单提交(PHP - CodeIgniter)
【发布时间】:2013-10-20 21:29:59
【问题描述】:

我有一个注册表单被发送到控制器进行验证,它被发送回视图页面,在视图页面上带有json encode(); 这是我的 ajax 脚本:

$('#register_form').submit(function(){
    $.post(    
        $(this).attr('action'),
        $(this).serialize(),
        function(data){
            $('.prev_message').parent('div').removeClass('field_block');
            $('.prev_message').html('');
            if(data.register_error)
            {
                $('#messages_register_error').html(data.register_error);
            }
            if(data.email)
            {
                $('#messages_email').parent('div').addClass('field_block');
                $('#messages_email').html(data.email);
            }
            if(data.first_name)
            {
                $('#messages_first_name').parent('div').addClass('field_block');
                $('#messages_first_name').html(data.first_name);
            }
            if(data.last_name)
            {
                $('#messages_last_name').parent('div').addClass('field_block');
                $('#messages_last_name').html(data.last_name);
            }
            if(data.password)
            {
                $('#messages_password').parent('div').addClass('field_block');
                $('#messages_password').html(data.password);
            }
            if(data.confirm_password)
            {
                $('#messages_confirm_password').parent('div').addClass('field_block');
                $('#messages_confirm_password').html(data.confirm_password);
            } 
            // if(data.link)
            // {
                // return true;
            // }
        },                    
        "json"        
    );
    return false;
});

如果控制器没有返回错误,我想知道如何将页面重定向到另一个页面。这是控制器中应该在成功提交后重定向到另一个页面的代码部分:

if($this->logged_user_info->user_status != 'admin')
{
    //set the dashboard link to user_dashboard
    $this->page['dashboard_link'] = "/ci/dashboard";
    $this->session->set_userdata('dashboard_link', $this->page['dashboard_link']);
    //go to user_dashboard function which will login user and display user dashboard info
    // $dashboard_link['link'] = 'success';
    // var_dump($dashboard_link);
    // die();
    // echo json_encode($dashboard_link);

    // redirect(base_url('/dashboard'));
    header('Location: user_dashboard');
}

现在,当我成功提交表单时发生的所有事情 - 它停留在注册视图页面上,当我检查元素时,我注意到它会进入仪表板页面但仅在检查元素部分而不是在视图页面上. (我觉得这与在我的 ajax 代码中显示 return false; 的事实有关)我只是不确定如何处理它应该只在出现错误时“返回 false”?

(注释掉的代码是我试图插入以解决此问题的代码,方法是向视图页面发送成功消息,但我仍然无法让 ajax 代码重定向到第二个视图返回成功消息的页面。)

【问题讨论】:

  • 由于您似乎是 SO 的新用户,我想鼓励您take the tour 或阅读the help page,了解如何(以及为什么)接受答案。 ;-)

标签: php ajax codeigniter


【解决方案1】:

不要提交重定向标头,而是提交 URL 并在客户端触发重定向:window.location.href = target(顺便说一句,您几乎拥有它):

if(data.link) {
    window.location.href = data.link;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-19
    • 1970-01-01
    • 2017-08-13
    • 2018-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多