我有一个正在发送给控制器进行验证的注册表单,它将被发送回查看页面上带有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;
)的事实有关。我只是不确定如何在错误时只返回“假”?
(注释掉的代码是我试图插入以修复此问题的代码,通过向视图页面发回成功消息但我仍然无法将ajax代码重定向到第二个视图返回成功消息的页面。)
答案 0 :(得分:2)
不要提交重定向标题,而是提交URL并在客户端触发重定向:window.location.href = target
(你几乎得到了它):
if(data.link) {
window.location.href = data.link;
}