我在表单中遇到了 POST 方法的问题。我有一个带有 POST 方法的表单的页面A,当我提交表单时,它转到第b页。
现在的问题是,当我刷新它时 弹出一个我不想来的警报。我正在使用HTML和Javascript。
有没有办法处理这个刷新?
我能想到的一种方法是动态地在页面b上创建一个隐藏的表单,其中的值填充在字段中,每次刷新它只是提交隐藏的表单。
如果有其他整洁的工作,请建议并告诉我。提前致谢! 基本上我在AS400平台上使用CGIDEV2。因此,当提交页面a上的输入表单时,它会调用abc.pgm来写入页面b。 Cgidev2分段编写html。它会写/ TOP部分然后/ REFRESHFORM。这些值将填入abc.pgm。
PAGE a
/FORM
<form name="input" action="abc.pgm" method="POST">
Username: <input type="text" name="user"><input type="submit" value="Submit"></form>
Page b
/TOP
-----------------
--------------
/REFRESHFORM
<form name="refreshinput" action="abc.pgm" method="POST">
Username: <input type="text" name="user"><input type="submit" value="Submit"></form>
答案 0 :(得分:1)
您是否试图避免“确认表格重新提交”提醒?通常的方法是使用POST/Redirect/GET模式:页面A将表单发布到服务器,服务器处理数据,然后向用户发出3xx重定向,触发页面B的GET请求。因此,后续重新加载页面B只是通常的练习,即没有警报消息。
答案 1 :(得分:0)
如果对提交按钮使用单击事件处理程序,则只需要阻止单击时的默认操作。
$('#Submit').click(function(e){
e.preventDefault();
// submit the form using ajax
// on success go to the page B
...
}
答案 2 :(得分:0)
没有简单的方法可以避免此问题,但您可以尝试使用XMLHttpRequest对象而不是表单。您需要编写一些javascript代码,但您的服务器代码将保持不变。
请参阅以下documentation和example。
<!DOCTYPE html>
<html>
<head>
<script>
function Submit()
{
var form = document.getElementById("data-form");
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
form.innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("POST","abc.pgm",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("userName=" + form["userName"].value + "&userPass=" + form["userPass"].value);
}
</script>
</head>
<body>
<form id="data-form">
Username: <input type="text" name="userName">
Userpass: <input type="text" name="userPass">
<input id="submit" onclick="Submit()" type="button" value="Submit">
</form>
</body>
</html>