提交后ajax表单重定向

Dem*_*mko 2 javascript php forms ajax jquery

您好,我提交表单后我遇到重定向问题.我正在使用简单的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();
});
Run Code Online (Sandbox Code Playgroud)

问题是在提交成功后它没有重定向到"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();

    }


}
Run Code Online (Sandbox Code Playgroud)

Dav*_*hen 5

如果重定向使用AJAX调用的页面,则不会重定向父页面.

你应该做的是回应标识用户已成功登录的内容.

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

echo "success";
Run Code Online (Sandbox Code Playgroud)

然后,在你的成功功能:

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

请注意,success在ajax中并不意味着您已成功登录,只是意味着返回页面的请求没有错误(500).您仍需要确定要对数据执行的操作.