1

我在表单中遇到 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>
4

3 回答 3

1

您想避免“确认表单重新提交”警报吗?通常的方法是使用POST/Redirect/GET模式:页面 A 会将表单 POST 到服务器,服务器处理数据,然后向用户发出 3xx 重定向,触发对页面 B 的 GET 请求。因此,随后重新加载页面 B 将只是通常的练习,即没有警报消息。

于 2012-09-22T15:15:00.617 回答
0

没有简单的方法可以避免此问题,但您可以尝试使用 XMLHttpRequest 对象而不是表单。您将需要编写一些 javascript 代码,但您的服务器代码将保持不变。

请参阅以下文档示例

<!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>
于 2012-09-22T16:08:16.457 回答
0

如果您对提交按钮使用单击事件处理程序,则只需要阻止单击时的默认操作。

$('#Submit').click(function(e){
  e.preventDefault();
  // submit the form using ajax
  // on success go to the page B
  ...
}
于 2012-09-22T14:25:20.227 回答