JS window.location无法正常工作

时间:2016-04-26 15:12:20

标签: javascript html window.location

我的window.location不会将页面重定向到所需的位置。 window.open使用相同的代码。当用户名和密码不正确时,也会执行else语句。输入正确的用户名和密码后,它只刷新同一页面。

    <div class="login" style="position:relative;top:200px;">

    <form name="login" method="post">
    <p align="middle">Please login to continue </p><p align="middle"><input type="text" name="login" placeholder="Username"></p>

    <p align="middle"><input type="password" name="pwd" placeholder="Password"></p>
    <p class="submit" align="middle"><input type="submit" onclick ="return check(this.form)" value="Login" name="commit"></p>

    </form>

    <script language="javascript">
        function check(form) { 
            if(form.login.value == "admin" && form.pwd.value == "sysadmin") {
                window.location('alumni.html');
            }
            else {
                alert("Ten thousand thundering typhoons! What is the blasted password?");
            }
        }
    </script>




    <!--<script type='text/javascript' src='alumna.json'></script> -->
    </div>

4 个答案:

答案 0 :(得分:2)

您也可以尝试使用

 window.location = 'http://www.yoururl.com/alumni.html';

或直接

 window.location = 'alumni.html';

这里有一个关于javascript重定向的好问题:How do I redirect with Javascript?

[编辑#1]

虽然我认为这不是主要问题。我相信你不能验证你这样做的方式。在表单中,有一个名为action的属性,如http://www.w3schools.com/tags/att_form_action.asp

中所述

然后在您加载的页面中,验证参数并确定其是否正确,如果正确则重定向到一个页面,如果错误则重定向到另一个页面。

或者您也可以加载页面,如果验证正确,请留在页面中,如果错误重定向到登录页面。

这是一种方法,可能还有另一种方法更好。

[编辑#2]

我个人要做的是在PHP页面中处理表单,它更容易,更简单。可能像:

HTML中的

 <div class="login" style="position:relative;top:200px;">

    <form name="login" action="myPhpPage.php" method="post">
    <p align="middle">Please login to continue </p>
    <p align="middle"><input type="text" name="login" placeholder="Username"></p>

    <p align="middle"><input type="password" name="pwd" placeholder="Password"></p>
    <p class="submit" align="middle">
    <input type="submit" onclick ="" value="Login" name="commit"></p>

    </form>

    <!--<script type='text/javascript' src='alumna.json'></script> -->
</div>

在PHP页面中:

$name = $_POST['login']; // it's $_post because you are sending the form with method = post
$pass =  $_POST['pwd'];  

if($name == "admin" &&  $pass == "sysadmin"){
    //go to one page or stay here
} else{
    // redirect to another page
}

答案 1 :(得分:1)

window.location是一个只读属性:

  

Window.location只读属性返回一个Location对象,其中包含有关文档当前位置的信息。

MDN on window.location

试试这个:window.location.replace("http://stackoverflow.com");

答案 2 :(得分:1)

这是一个有效的代码:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title> Login Redirection Test</title>
<script>
    function validateForm() {
    var un = document.forms["login"]["user"].value;
    var pw = document.forms["login"]["pwd"].value;
    if (un == "admin" && pw=="sysadmin") {
        window.location.assign="https://stackoverflow.com";
        return false;
        }else {
                alert("Ten thousand thundering typhoons! What is the blasted password?");
            }
    }
</script>
</head>

<body>
    <div class="login" style="position:relative;top:200px;">

    <form name="login" onsubmit="return validateForm()"  method="post">
    <p align="middle">Please login to continue </p><p align="middle"><input type="text" name="user" placeholder="Username"></p>

    <p align="middle"><input type="password" name="pwd" placeholder="Password"></p>
    <p class="submit" align="middle"><input type="submit" onclick ="return check(this.form)" value="Login" name="commit"></p>

    </form>


    <!--<script type='text/javascript' src='alumna.json'></script> -->
    </div>
</body>
</html>

答案 3 :(得分:0)

Window.location不是一个函数,它只是一个被读取的属性。但是,

    window.location.assign

可能会更好。