[英]ajax form redirect after submit
您好,我在提交表單后遇到重定向問題。 我正在使用簡單的 ajax 表單在 div 中顯示登錄錯誤。
$(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();
}
}
如果重定向使用 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
並不代表你已經登錄成功,只是說明對頁面的請求返回沒有錯誤(500)。 您仍然需要決定要對數據做什么。
這里有兩件不同的事情。
1 - 你的 AJAX 函數。 它在異步調用服務器的頁面上
2 - 您的登錄頁面。 它由包含 AJAX 的頁面調用
您的第二頁中的代碼發生在服務器中,而您的AJAX
代碼發生在您的客戶端中。
您應該在您的 php 登錄頁面中返回一條成功消息,然后在您的成功回調中,檢查該消息是否正確,這表示用戶已成功登錄。 一旦您檢查消息是正確的,您可以從成功回調重定向用戶,執行: location.href = "yourUrl"
這是一些對我很有用的生產代碼,用於提交表單然后重定向。
$.ajax({
url: "QuoteReload.php",
type: 'GET',
data: 'batchid=' + bid + '&operation=archiveBatch',
success: function(response) {
// window.location.href = "EditItem.php?batchid=" + bid + ""eitemid=NEW";
$(location).attr('href', 'Quote.php?QuoteId=<?php echo $QuoteId; ?>')
},
error: function(xhr) {
$(ddl).css("background-color", "#4C25BC");
alert('Delete Batch error: ' + xhr);
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.