Javascript jQuery中的页面重定向随机失败。比赛条件?

Javascript jQuery中的页面重定向随机失败。比赛条件?,javascript,jquery,redirect,asynchronous,Javascript,Jquery,Redirect,Asynchronous,在非常好的示例上,我编写了一些jQuery代码来验证用户。如果身份验证成功,则应将window.location对象分配/替换到新URL 重定向偶尔会失败,即使用户已正确验证:根据sessionStorage('Auth')的值,已验证用户的菜单外观会被其他一些JS代码修改,因此我知道何时正确输入了凭据 这是我的密码 $(文档).ready(函数(){ $(“#提交”)。单击(函数(){ var webservicereff=window.location.href; var webServi

在非常好的示例上,我编写了一些jQuery代码来验证用户。如果身份验证成功,则应将window.location对象分配/替换到新URL

重定向偶尔会失败,即使用户已正确验证:根据sessionStorage('Auth')的值,已验证用户的菜单外观会被其他一些JS代码修改,因此我知道何时正确输入了凭据

这是我的密码

$(文档).ready(函数(){
$(“#提交”)。单击(函数(){
var webservicereff=window.location.href;
var webServicePath=webservicereff.slice(0,webservicereff.lastIndexOf(“/”);
var serviceUrl=webServicePath+“/login.php”;
$.post(serviceUrl,
{
电子邮件:$(“#电子邮件”).val(),
密码:$(“#密码”).val()
}).完成(功能(数据、状态){
var json=json.parse(数据);
if(json.valid==true){
setItem('Auth',true);
setItem('FirstName',json.FirstName);
setItem('Email',json.Email);
$(“#messageLine”).val(“身份验证成功”);
$(location.attr('href',webServicePath+“/welcome.html”);
//window.location.href=webServicePath+“/welcome.html”;
}否则{
sessionStorage.clear();
$(“#messageLine”).val(“不正确的用户名或密码”);
}
});
});//单击
});//就绪
如果您的
“#submit”
元素实际上正在提交表单(例如,它是
表单
中“submit”类型的输入),则可能会取消页面重定向。例如,当表单上未指定任何
操作
时,它只会重新加载同一页面,从而防止您对
window.location.href
的修改产生任何影响

另见该员额:

您有3种简单可行的解决方案:

  • 将元素/按钮转换为普通元素/按钮(而不是提交)
  • 阻止元素/按钮提交表单(
    函数(事件){event.preventDefault();/*代码的其余部分*/}
  • 在表单提交事件上附加主回调。然后,用户可以通过点击“回车”来触发操作,而不仅仅是点击提交按钮

你完全正确@ghybs!我对html表单关注不够(我的帖子中没有包含源代码)。我离开了
,这会导致单击事件偶尔由表单响应,而不是由jQuery函数响应。一旦我将html代码更改为
,一切都开始按预期工作。非常感谢。