为什么在同一浏览器窗口中将重定向的页面加载到当前页面的顶部?

时间:2018-06-20 01:29:28

标签: javascript php jquery

我已经找到了使用Javascript解决此问题的方法,但想知道为什么会这样,并想出使用PHP的可能解决方案。

在我的注册页面(register.php)上,我在提交按钮上使用了jQuery的preventDefault(),但是如果在成功注册后调用header("Location: /index.php");,则我的索引页面将被加载到我的注册页面之上。我的浏览器中的URL仍然显示register.php。

使用Java脚本重定向可以解决问题,但是为什么PHP会发生这种情况?我的注册脚本的所有其他功能都可以正常使用,包括在发生错误时我使用header()将用户重定向到我的主页的其他位置(即,当用户尝试直接导航到... / _ registerAccount.php时);

jQuery:

/// <reference path="jquery-3.3.1.min.js" />

$(document).ready(function() {

    $("form").submit(function(event) {

        event.preventDefault();

        var username = $("#register-username").val();
        var email = $("#register-email").val();
        var password = $("#register-password").val();
        var confirmPassword = $("#register-confirm-password").val();
        var submit = $("#register-submit").val();

        $(".form-message").load("../shared/_registerAccount.php", {

            username: username,
            email: email,
            password: password,
            confirmPassword: confirmPassword,
            submit: submit

        });
    });
});

PHP:

        else
        {
            $errorEmpty = $errorUsername = $errorEmail = $errorPassword = $errorConfirmPassword = false;

            $hashedPassword = password_hash($password, PASSWORD_DEFAULT);

            mysqli_stmt_bind_param($statement, "sss", $username, $email, $hashedPassword);

            mysqli_stmt_execute($statement);

            session_start();
            $_SESSION['register-success'] = 'You have successfully registered! Please verify your email before logging in.';

            $registrationSuccessful = true;

            //My Javascript workaround
            //exit('<script type="text/javascript">location.assign("../index.php")</script><a href="../index.php">Home</a>');

            header('Location: ../index.php');
            exit();
        }

0 个答案:

没有答案