我使用9个复选框从用户获取输入,并使用POST方法获取数据。问题是,当我尝试重新加载该页面时,浏览器显示以下消息-
"要显示此页面,Firefox必须发送信息以重复之前执行的任何操作(例如搜索或订单确认)。"有2个选项,重新发送取消。请告诉我该怎么办。不能使用GET,因为它显示我的整个搜索查询。
如果要执行一些搜索来获取信息,我建议只使用 get 。POST-REDIRECT-GET也会显示你的搜索查询。
如果您使用post,浏览器将确认您确实想要再次发布。使用GET来获取数据,使用POST来操作数据,在我个人看来
快捷方式:将复选框的所有值存储在$_Session[]数组中,并首先检查。
if($_SESSION["CheckBox1"] === "on")
{
// Do Stuff
}
else
{
// Get $_POST[] Data and do stuff
$_SESSION["CheckBox1"] = $_POST["CheckBox1"];
...
}
当用户提交表单时,您首先检查$_SESSION是否有数据,否则将数据放入其中并继续正常工作。如果发生重新加载,则使用$_SESSION值,而不是现在空的$_POST数组。
发布数据后,重定向到当前页面。这将消除重发/取消问题。
如果你的网站是基于用户配置文件的,你可以查看用户数据并返回选中的复选框。
或
你可以设置一个cookie值,通过javascript[在复选框点击时]或后端[张贴时],这样你可以存储选中的复选框,并返回点击后重新加载
只有在POST请求后尝试刷新页面时才会发生这种情况。
Bowser问你应该做什么:重新发送POST数据或简单刷新页面而不发送POST(只发送GET)。
在Chrome上的行为相同。Opera不会询问,只是在默认情况下重新发送先前发送的POST数据。
将搜索表单中的方法请求类型从POST更改为GET,并删除了确认框