对复选框使用POST方法会在“重新加载/刷新”上产生问题.这个页面


Using POST method for checkboxes is creating problems on "Reloading/Refreshing" that page

我使用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,并删除了确认框