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

时间:2011-09-01 05:20:46

标签: php html

我使用9个复选框来获取用户的输入并使用POST方法获取数据。问题是,当我尝试重新加载该页面时,浏览器会向我显示此消息 -

“要显示此页面,Firefox必须发送重复之前执行的任何操作(例如搜索或订单确认)的信息。” 有2个选项,RESEND CANCEL。请告诉我该怎么办。无法使用GET,因为它显示我的整个搜索查询。

5 个答案:

答案 0 :(得分:1)

如果您要进行一些搜索以获取信息,我建议您只使用 GET POST-REDIRECT-GET 也会显示您的搜索查询。

如果您使用帖子,浏览器会确认您确实想再次发帖。 我个人认为,使用GET获取数据,使用POST来操作数据。

答案 1 :(得分:0)

快速和脏:将复选框的所有值存储在$ _Session []数组中并首先检查它。

if($_SESSION["CheckBox1"] === "on")
{
    // Do Stuff
}
else
{
    // Get $_POST[] Data and do stuff
    $_SESSION["CheckBox1"] = $_POST["CheckBox1"];
    ...
}

当用户提交表单时,首先检查$ _SESSION是否有数据,否则将数据放入其中并继续正常工作。如果发生重新加载,则使用$ _SESSION值,而不是现在为空的$ _POST数组。

答案 2 :(得分:0)

发布数据后,重定向到当前页面。这将取消重新发送/取消问题。

如果您的网站是基于用户个人资料的,您可以查看用户数据并返回选中的复选框。

OR

你可以设置一个cookie值,通过javascript [在复选框点击]或后端[发布时],这样你就可以存储选中的复选框并返回它点击重新加载。

答案 3 :(得分:0)

只有在POST请求后尝试REFRESH页面时才会发生这种情况。

Bowser问你应该怎么做:重新发送POST数据或只是刷新页面而不用POSTING(仅发送GET)。

Chrome上的行为相同。 Opera没有问,只是默认重新发送以前发送的POST数据。

答案 4 :(得分:0)

在我的搜索表单中将方法请求类型从POST更改为GET并删除了确认框..