2015-07-22 203 views
1

你好,我有問題,表單提交後重定向。 我使用簡單的ajax窗體顯示登錄錯誤在一個div。ajax表單提交後重定向

$(document).ready(function(){ 
$('#formlogin').on('submit', function (e) { 

    $.ajax({ 
     type: 'POST', 
     url: 'login.php', 
     data: $(this).serialize(), 
     success: function(data) { 
     $('div#ack').empty().append(data); 

     } 

    }); 

    e.preventDefault(); 
}); 

的問題是後提交成功並不重定向到「logged_in.php」

這裏是php登錄。

if (empty($username) === true || empty ($password) === true) { 
    $errors [] = 'Please enter both username and password!'; 

} else if (user_exists($username) === false) { 
    $errors [] = 'We can not find the name. Have you registered?'; 
} else { 

    $login = login($username, $password); 
    if ($login === false) { 
     $errors [] = 'This user name or password is incorrect.'; 

    } else { 

     $_SESSION['user_id'] = $login; 
     header('Location: logged_in.php'); 
     exit(); 

    } 


} 

回答

3

如果您重定向這是所謂的用AJAX頁面時,它會重定向父頁面。

你應該做的是回聲的東西,識別出用戶成功登錄

也許不是header('Location: logged_in.php');你把:

echo "success"; 

然後,在你成功的功能:

success: function(data) { 
    if (data == "success") 
     window.location = "logged_in.php"; 
    else 
     alert("Wrong password."); 
} 

請注意,在ajax中success並不意味着您已經成功登錄,只是意味着對頁面的請求re轉過來沒有錯誤(500)。你仍然需要決定你想要用你的數據做什麼。

+0

謝謝你,現在我得到它:) – Demko

0

這裏有兩個不同的東西。

1 - 您的AJAX功能。 它是在一個頁面上異步調用服務器

2 - 您的登錄頁面。 它被您的頁面調用,包含AJAX

您的第二頁中的代碼發生在服務器中,而您的客戶端中發生了AJAX代碼。

您應該在您的php登錄頁面返回成功消息,然後在您的成功回調中檢查消息是否是正確的,這將意味着用戶已成功登錄。一旦你檢查消息是正確的,你可以重定向用戶從你的成功回調,做: location.href = "yourUrl"