关于javascript:JS window.location无效

JS window.location not working

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
    <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 type='text/javascript' src='alumna.json'> -->

你也可以试试

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

或直接

1
 window.location = 'alumni.html';

这里有一个关于在javascript中重定向的好问题:如何使用javascript重定向?

【编辑> 1】

虽然我认为这不是主要问题。我相信你不能证实你的做法。表单中有一个名为action的属性,如http://www.w3schools.com/tags/att_form_Action.asp中所述。

然后,在加载的页面中,验证参数并决定其正确与否,在哪里重定向到一个页面(如果正确),或者重定向到另一个页面(如果错误)。

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

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

【编辑> 2】

我个人要做的是在一个PHP页面中处理表单,这非常简单和简单。可以像:

在HTML中:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    <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'> -->

在php页面中:

1
2
3
4
5
6
7
8
$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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
 Login Redirection Test

    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?");
            }
    }

</head>

<body>
   

    <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'> -->
   
</body>
</html>


window.location是只读属性:

The Window.location read-only property returns a Location object with information about the current location of the document.

窗口上的MDN。位置

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


window.location不是函数,它是一个刚刚读取的属性。然而,

1
    window.location.assign

可能会更好。