阿贾克斯形式重定向后提交(ajax form redirect after submit)

2019-10-24 02:12发布

你好我在使用重定向问题表已提交后。 我使用的是简单的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();

    }


}

Answer 1:

如果您重定向这是所谓的用AJAX页面时,它不会重定向父页面。

你应该做的是什么回音标识用户已登录成功。

也许,而不是header('Location: logged_in.php'); 你把:

echo "success";

然后,在你成功的功能:

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

需要注意的是success的AJAX并不意味着你已经成功登录,就意味着该请求的页面没有错误(500)返回。 您还需要决定你想与您的数据做什么。



Answer 2:

这里有两个不同的东西。

1 -您的AJAX功能。 这是一个异步调用服务器页面上

2 -您的登录页面。 它是由含有AJAX你的页面叫做

在第二页中的代码发生在服务器上,而你的AJAX代码在客户端发生的事情。

你应该在你的PHP登录页面返回成功的消息,然后,在你的成功回调,检查的消息是正确的,这将意味着用户登录成功。 一旦你检查信息是正确的,您可以将用户从您的成功回调重定向,这样做的: location.href = "yourUrl"



文章来源: ajax form redirect after submit