Javascript:window.location重新加载编写脚本的页面

Javascript:window.location重新加载编写脚本的页面,javascript,html,Javascript,Html,我在一个页面(Home.html)上有一个登录表单,其中包含电子邮件ID和密码。它使用javascript进行验证,并重定向到另一个页面(Login.html) 函数重定向(){ var email=$('#email').val(); var password=$('#password').val(); 如果(电子邮件=='user@gmail.com“&&password==”用户“) window.location='Login.html'; 其他的 警报(“错误凭证”); } 如果输入

我在一个页面(Home.html)上有一个登录表单,其中包含电子邮件ID和密码。它使用javascript进行验证,并重定向到另一个页面(Login.html)

函数重定向(){
var email=$('#email').val();
var password=$('#password').val();
如果(电子邮件=='user@gmail.com“&&password==”用户“)
window.location='Login.html';
其他的
警报(“错误凭证”);
}
如果输入了错误的凭据,则会按预期显示警报框,但如果输入了正确的凭据,则会在转到Login.html时重新加载Home.html

function redirect() {
  var email = $('#email').val();
  var password = $('#password').val();
  if(email=='user@gmail.com' && password=='user')
     window.location = 'Login.html';
  else
     alert("Wrong credentials");
}


<form onsubmit='redirect()' method='post'>
我已尝试将window.location更改为window.location.href,但没有帮助


如果未使用表单标记,并且在按钮标记中使用onclick来调用redirect()函数,则它可以正常工作。

如果从redirect方法返回false,则不会提交表单。如果出现错误,请尝试返回false

function redirect() {
  var email = $('#email').val();
  var password = $('#password').val();
  if(email=='user@gmail.com' && password=='user')
     window.location = 'Login.html';
  else
   {
     alert("Wrong credentials");
    return false;
  }
}
并将表格更改为

<form onsubmit='return redirect()' method='post'>

提交表单将导致加载新页面。这将从JS的提交事件中取消JS执行的任何
位置
分配

由于没有action属性,因此加载的新页面是与现有页面具有相同URL的页面

您需要取消提交事件的默认行为(即表单提交)。快速而肮脏的方法是从submit事件处理程序函数返回false:

<form onsubmit='redirect(); return false;' method='post'>

健壮的代码将被编写,这样如果(which),那么表单将正常提交,而服务器端代码将执行该活动



除此之外,用户重定向到的用户名、密码和不安全URL都可以在页面的源代码中看到,因此,您确实需要在服务器上执行此操作,而且无论如何只能在服务器上执行。

问题在于,您的代码不会阻止与提交
相关的正常本机浏览器操作。客户端的身份验证是无意义的。任何人都可以检查源代码并找到密码。@Oriol我知道应该使用服务器端代码,而且这个页面根本不安全,但这只是一个大学项目的本地网站。它不会出现在互联网上。无论如何,感谢您的输入。从
require
函数返回false不会有任何效果。请使用此答案,并将返回添加到表单元素的函数前面:
非常感谢昆廷的解释。而且你的回答对我也有用。我知道应该使用服务器端代码,而且这个页面根本不安全,但这只是一个大学项目的本地网站。
<form method='post'>
function redirect(event) {
  var email = $('#email').val();
  var password = $('#password').val();
  if(email=='user@gmail.com' && password=='user')
     window.location = 'Login.html';
  else
     alert("Wrong credentials");
  event.preventDefault();
}

document.querySelector("form").addEventListener("submit", redirect);