2013-10-20 116 views
0

我有一個註冊表單被髮送到控制器進行驗證,它被髮回到查看頁面上的json encode();這是我的腳本AJAX:如何重定向成功的AJAX表單提交(PHP - CodeIgniter)

$('#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代碼重定向到第二個在成功的消息視圖頁面返回)

+0

正如你似乎是SO上的新用戶,我想鼓勵您[參觀](http://stackoverflow.com/about)或閱讀[幫助頁面](http://stackoverflow.com/help)如何(以及爲什麼)接受答案。 ;-) – nietonfir

回答

2

不要提交一個重定向頭,但URL和客戶觸發重定向:window.location.href = target(你幾乎擁有了BTW):

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