首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Javascript: window.location重新加载编写脚本的相同页面

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

Stack Overflow用户
提问于 2016-02-21 19:20:34
回答 3查看 2.1K关注 0票数 2

我有一个页面上的登录表单(Home.html),它接受电子邮件ID和密码。它使用javascript验证并重定向到另一个页面(Login.html)。

代码语言:javascript
运行
复制
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'>

如果输入了错误的凭据,则会按预期显示警报框,但当输入正确的凭据时,则将Home.html重新加载到Login.html。

我尝试过将window.location更改为window.location.href,但这并没有帮助。

如果不使用form标记,并且在按钮标记中使用onclick调用重定向()函数,它就能正常工作。

EN

Stack Overflow用户

回答已采纳

发布于 2016-02-21 19:23:36

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

由于您没有action属性,所以加载的新页面与现有页具有相同的URL。

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

代码语言:javascript
运行
复制
<form onsubmit='redirect(); return false;' method='post'>

现代代码将事件处理程序与JavaScript绑定,而不是首先使用内部事件处理程序:

代码语言:javascript
运行
复制
<form method='post'>

代码语言:javascript
运行
复制
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);

健壮的代码将被编写为不引人注意,这样如果JavaScript失败 (哪个它会的),则表单将以正常方式提交,而服务器端代码则将执行活动。

除此之外,用户重定向到的用户名、密码和不安全的URL在页面的源代码中都是可见的,因此您确实需要在服务器上并且只在服务器上这样做。

票数 1
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35540807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档