1

我使用 invision 电源板为管理控制面板添加了小插件。在这个插件中,用于更改我添加的数据库中的一些值。当我提交表单一切正常,但是当我用 F5 重新加载所有页面时,表单再次提交。

有我的代码

<form method="post" id='xp_form' name='xp_form' enctype="multipart/form-data" action="" style='margin: 5px;'>
                    <label style='font-weight: bold;'>New value</label>
                    <p style='margin-top: 3px;'>
                        <input size="5" maxlength="7" name="xpValue" value="" tabindex="1" style='width: 98%; border-radius: 7px;'>
                    </p>
                    <fieldset style='text-align: center;border-top: 1px solid #ccc;margin-top:5px;'>
                        <input value='Cancel' name='xn_value' onclick='closeEdit()' type='button' style='padding: 4px;cursor: pointer;-webkit-border-radius: 4px; border-radius: 4px;border-color: #2b2b2b;'> &nbsp;
                        <input value=' Save ' type='button' onclick='return testPost()' style='padding: 4px;cursor: pointer;-webkit-border-radius: 4px; border-radius: 4px;border-color: #2b2b2b;'>
                        </fieldset>
                </form>

和用于提交表单的 javascript 代码

document.forms["xp_form"].submit(); //first submit
                        document.forms["xp_form"].reset(); //and then reset the form values

我无法重定向到另一个页面或禁用提交按钮。让我解释。我用cms。对于仪表板,我添加了 plugin -> image。当管理员选择行并单击带有显示弹出窗口的铅笔图标的按钮时。在此窗口中,管理员可以编辑值,然后保存值,然后编辑其他记录

4

4 回答 4

0

如果您有权访问处理已发布值的代码,则可以允许重新提交,但仅当数据库值与之前发布的值不同时才更新数据库值。

为此,您需要记住以前的值,可能是通过使用会话或 cookie,或者可能是隐藏的输入,每次都存储 POST 的值(或者可能使用 md5(value))。然后,在您的处理中,您可以将接收到的值与之前记住的值进行比较,并且只有在这些值不同时才调用数据库更新代码。

于 2013-07-20T09:48:35.717 回答
0

重定向到未提交的页面是最简单的方法之一。

于 2013-07-20T07:24:45.423 回答
0

如果您仍然使用 JavaScript,您可以禁用“提交”按钮并向服务器发送 AJAX 帖子。如果请求失败,您可以再次启用按钮,如果成功,您可以重定向用户而不启用按钮。

第二个选项是编写服务器代码,当发布数据到来时,您处理表单并向用户发送不支持发布的另一个页面(如“谢谢”页面)的重定向。

于 2013-07-20T07:31:09.880 回答
-1

我就是这样做的,而且效果很好。我将数据提交给服务器端处理程序,比如 temp.php(更改为您的处理程序)。处理程序将 $_POST 或 $_GET 变量存储在会话中。我相信每个服务器端技术都有一些会话处理。然后在页面提交后立即重定向到您希望用户所在的页面(在 php 中,这是使用 header() 调用完成的)。这通过刷新解决了多次提交。

如果您不希望用户被重定向到另一个页面,请使用带有禁用/启用提交按钮并在提交后清除表单字段的 ajax。

于 2013-07-20T09:28:33.673 回答