Javascript 检索POST方法表单传递的值
我在表单中遇到了一些关于POST方法的问题。我有一个带有POST方法的表单的a页,当我提交表单时,它会转到b页 现在的问题是,当我刷新它 弹出一个我不想来的警报。我正在使用HTML和Javascript 有没有办法处理此刷新 我可以想到的一种方法是在b页上动态创建一个隐藏表单,在字段中填充值,每次刷新时它都会提交该隐藏表单 请建议,让我知道,如果有一些其他整洁的工作。提前谢谢! 基本上,我在AS400平台上使用CGIDEV2。因此,当提交a页上的输入表单时,它调用abc.pgm,后者编写b页。Cgidev2在节中编写html。它将写入/TOP部分,然后/REFRESHFORM。这些值将填充在abc.pgm中Javascript 检索POST方法表单传递的值,javascript,html,forms,post,ibm-midrange,Javascript,Html,Forms,Post,Ibm Midrange,我在表单中遇到了一些关于POST方法的问题。我有一个带有POST方法的表单的a页,当我提交表单时,它会转到b页 现在的问题是,当我刷新它 弹出一个我不想来的警报。我正在使用HTML和Javascript 有没有办法处理此刷新 我可以想到的一种方法是在b页上动态创建一个隐藏表单,在字段中填充值,每次刷新时它都会提交该隐藏表单 请建议,让我知道,如果有一些其他整洁的工作。提前谢谢! 基本上,我在AS400平台上使用CGIDEV2。因此,当提交a页上的输入表单时,它调用abc.pgm,后者编写b页。C
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>
a页
/形式
用户名:
b页
/顶
-----------------
--------------
/刷新格式
用户名:
如果对提交按钮使用单击事件处理程序,只需防止单击时的默认操作
$('#Submit').click(function(e){
e.preventDefault();
// submit the form using ajax
// on success go to the page B
...
}
如果您对submit按钮使用click事件处理程序,则只需防止单击时的默认操作
$('#Submit').click(function(e){
e.preventDefault();
// submit the form using ajax
// on success go to the page B
...
}
您试图避免“确认表单重新提交”警报?通常的方法是使用这种模式:页面A将表单发布到服务器,服务器处理数据,然后向用户发出3xx重定向,触发对页面B的GET请求。因此,后续重新加载页面B只是一种常见的演练,即没有警报消息。您试图避免“确认表格重新提交“警惕?通常的方法是使用这种模式:页面A将表单发布到服务器,服务器处理数据,然后向用户发出3xx重定向,触发对页面B的GET请求。因此,后续重新加载页面B只是一种常见的演练,即没有警报消息。没有简单的方法可以避免此问题,但是您可以尝试使用XMLHttpRequest对象而不是表单。您将需要编写一些javascript代码,但您的服务器代码将保持不变 请参阅下面的和
函数提交()
{
var form=document.getElementById(“数据表单”);
var-xmlhttp;
if(window.XMLHttpRequest)
{//IE7+、Firefox、Chrome、Opera、Safari的代码
xmlhttp=新的XMLHttpRequest();
}
其他的
{//IE6、IE5的代码
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
xmlhttp.onreadystatechange=函数()
{
if(xmlhttp.readyState==4&&xmlhttp.status==200)
{
form.innerHTML=xmlhttp.responseText;
}
}
open(“POST”,“abc.pgm”,true);
setRequestHeader(“内容类型”,“应用程序/x-www-form-urlencoded”);
xmlhttp.send(“userName=“+form[“userName”].value+”&userPass=“+form[“userPass”].value”);
}
用户名:
用户通行证:
没有简单的方法可以避免这个问题,但是您可以尝试使用XMLHttpRequest对象而不是表单。您将需要编写一些javascript代码,但您的服务器代码将保持不变
请参阅下面的和
函数提交()
{
var form=document.getElementById(“数据表单”);
var-xmlhttp;
if(window.XMLHttpRequest)
{//IE7+、Firefox、Chrome、Opera、Safari的代码
xmlhttp=新的XMLHttpRequest();
}
其他的
{//IE6、IE5的代码
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
xmlhttp.onreadystatechange=函数()
{
if(xmlhttp.readyState==4&&xmlhttp.status==200)
{
form.innerHTML=xmlhttp.responseText;
}
}
open(“POST”,“abc.pgm”,true);
setRequestHeader(“内容类型”,“应用程序/x-www-form-urlencoded”);
xmlhttp.send(“userName=“+form[“userName”].value+”&userPass=“+form[“userPass”].value”);
}
用户名:
用户通行证:
事实上,这些都是旧代码,因此无法使用AJAX。必须使用JavaScript执行此操作您应该遵循Ultranaut建议的Post/Redirect/Get模式,但无论如何,最好的解决方案是使用AJAX。事实上,这些都是旧代码,因此无法使用AJAX。必须使用JavaScript执行此操作您应该遵循Post/Redirect/Get模式,这是Ultranaut建议的,但无论如何,最好的解决方案是使用ajax。页面b上的url将是重定向中设置的任何url。好的,谢谢!请你给我发一些链接,里面有代码,以便实现。好吧,这里所有的“魔法”都发生在服务器上,所以这完全取决于你在服务器端使用的是什么。由于不熟悉CGIDEV2,我无法在这方面帮助您,尽管我确信它在Google的某个地方。b页上的url将是您在重定向中设置的任何内容。好的,谢谢!请你给我发一些链接,里面有代码,以便实现。好吧,这里所有的“魔法”都发生在服务器上,所以这完全取决于你在服务器端使用的是什么。由于对CGIDEV2不熟悉,我在这方面帮不了你,尽管我确信它在谷歌的某个地方。谢谢!所以现在如果abc.pgm指向b页,然后在b页按F5时,它将再次提交此表单?谢谢!那么现在如果abc.pgm指向b页,然后在b页按F5时,它会再次提交此表单吗?