当提交隐藏表单以传递变量时,我们如何防止下一个表单重新发送数据



我的网站右上角总是显示一个登录表单。当发现无效的用户名/密码组合时,会根据服务器响应生成隐藏表单并提交,以便重定向到更大的登录名(即login.php(……当我通过隐藏表单重定向后提交登录login.php登录表单的新尝试时,浏览器会警告";要显示此页面,Firefox必须发送重复先前执行的任何操作(如搜索或订单确认(的信息"足够好的是,此消息仅在成功登录时显示(根据数据库正确的用户名/密码(。

以下是Javascript函数,用于处理服务器在尝试登录时的响应

handleLoginXML: function(xml){
var loginValue = xml.getElementsByTagName('info')[0].firstChild.nodeValue;
if(loginValue === "success"){
location.reload();
}
if(loginValue === "failed") {
this.post('?page=login', { login_error : 'Invalid Email/Password'});
}   
},

此外,这是在失败登录时提交隐藏表单的post函数

post: function(path, params, method='POST'){
const form = document.createElement('form');
form.method = method;
form.action = path;
for(const key in params) {
if(params.hasOwnProperty(key)){
const hiddenField = document.createElement('input');
hiddenField.type = 'hidden';
hiddenField.name = key;
hiddenField.value = params[key];    
form.appendChild(hiddenField);
}
}

document.body.appendChild(form);
form.submit();
}

我怎样才能阻止表单打开?page=重新发送隐藏表单数据后登录?问题是我处理成功登录的方式吗?感谢

这就是这里的问题location.reload();,它像点击刷新按钮一样重新加载页面。

一个简单的替代方案是:window.location.href = window.location.href;,它应该在不重新提交表单的情况下将用户重定向回同一个URL

您还可以重置表单:document.getElementById("myForm"(.reset((;

相关内容

  • 没有找到相关文章

最新更新