表单已提交。但在此之后,当我刷新它时,firefox会显示此消息"要显示此页面,Firefox必须发送信息,这些信息将重复之前执行的任何操作(例如搜索或订单确认)。"并给出两个选项"重新发送"或"取消"。
使用" GET"表格不会发生这种情况。方法
我的form.php代码如下。
<html>
<body>
<form action="" method="POST" enctype="multipart/form-data">
<input type="file" name="image">
<input type="submit" value="Submit">
</form>
</body>
</html>
我想这个解决方案在于&#34; POST后重定向&#34; (php)或form.reset()...(javascript)或HTML
我已经阅读了很多文章但我无法实现它,因为有很多理论可用,但没有工作实例。 我希望你们和这个网站可以帮助我。如果我获得成功,这对我来说将是最大的成就。谢谢!!
答案 0 :(得分:1)
是的,这是正常的。一种常见的做法是在使用php header()函数进行表单处理后让页面重定向到自身:
header("Location: http://www.example.com/");
答案 1 :(得分:1)
这是正常的浏览器行为。如果您不想这样,只需在处理POST数据后将用户重定向到页面。
您可以通过以下代码执行此操作:
header('Location: redirectpage.php');
请注意,这可能与您刚刚来的页面完全相同,但在重定向后,POST容器将为空,因此您的浏览器不会提示您重新发送数据。
答案 2 :(得分:0)
您必须执行以下操作: def __call__(self, inputs,state):
#c is not a output. c somehow is a "memory keeper".
#Necessary to update and pass new_c through LSTM
c,h=state
#...Calculate your z
#...inputs will be each tokens in context(passage) respectively
#...Calculate alpha_Q
z=tf.concat([inputs,alpha_Q],axis=1)
########This part is reimplement of Basic_LSTM
with vs.variable_scope("LSTM_core"):
sigmoid=math_ops.sigmoid
concat=_linear([z,h],dimension*4,bias=True)
i,j,f,o=array_ops.split(concat,num_or_size_splits=4,axis=1)
new_c=(c*sigmoid(f+self._forget_bias)+sigmoid(i)*self._activation(j))
new_h = self._activation(new_c) * sigmoid(o)
new_state=(new_c,new_h)
return new_h,new_state
或者如果您已发送标题,则可以执行以下操作:
header("Location: http://www.example.com/");
或试试这个:
//Complete response of sending form
<?php
echo "<meta http-equiv=\"refresh\" content=\"0; url=http://example.com/\" />\n";
?>
或者执行以下操作:
<script>
location.href = "youroriginalpage.php";
</script>
答案 3 :(得分:0)
在我刷新它时,提交带有“POST”方法的表单要求重新发送信息
这是正确的行为。
我想这个解决方案在于“POST后重定向”(php)或form.reset()......(javascript)或HTML
您必须按照POST-Redirect-GET (PRG) pattern设计应用程序。基本上,您需要从POST表单接收数据的PHP脚本。该脚本必须使用GET请求将浏览器重定向到相同或另一个脚本。因为使用GET检索最后一个脚本,所以如果刷新页面,则不会收到消息,也不会再次提交数据。
// For an script that shows the form and receives the data
// detect if it is received by POST
if (count($_POST)) {
// process the file using a function
process_upload($_FILES["image"]);
// redirect the browser to the same page
header("Location: ".$_SERVER['PHP_SELF']);
exit();
}
<html>
<body>
<form action="" method="POST" enctype="multipart/form-data">
<input type="file" name="image">
<input type="submit" value="Submit">
</form>
</body>
</html>
对于其他示例,您可以查看:
答案 4 :(得分:0)
<?php
if( $_POST )
{
if( empty($_POST['file']) )
{
// echo error or do nothing;
die("Select a file to upload");
}
}
?>
<html>
<body>
<form action="" method="POST" enctype="multipart/form-data">
<input type="file" name="image">
<input type="submit" value="Submit">
</form>
</body>
</html
希望这有帮助!
答案 5 :(得分:0)
这是一种正常的浏览器行为。为了避免这种情况,请打印出重定向代码,例如:
<script>
location.href = "youroriginalpage.php";
</script>
您需要将表单提交到除表单之外的页面,这在我看来也是一种更好的方法。
另一种方法也是发送一个AJAX请求,这将使用户保持在同一页面上。
答案 6 :(得分:0)
PRG pattern可以这样改写: