0

我一直在 Stackoverflow 上寻找一种方法来以与 F5 相同的方式重新加载页面。我的意思是我有以下问题:

我有一个 php 页面,其中包含一个表单(比如说 data.php)和一个包含数据库数据的表。表单通过 post 方法调用另一个 php 页面来执行一个动作(action.php)。调用 Action.php 并更新我的数据库。现在我想返回 data.php 并且我希望更新表以读取我的数据库中的更改。

我所做的是在 action.php 中尝试以下内容:

  1. Header('Location: data.php'): 这没有用,因为它把我发送到 data.php 但在通过 F5 刷新页面之前我看不到表中有任何变化,我发现这是因为 php 是一种服务器端语言,因此它不能对您的浏览器起作用并告诉它重新加载页面,对吗?
  2. Header('Location: data.php?u=reload'): 然后在 data.php 中对 $_GET['u'] 进行控制,如果该变量等于 reload 我让 data.php 设置标题 data.php 然后调用一个 jscript location.reload。同样,我在桌子上没有任何变化。

现在我希望在数据库更新后自动刷新 data.php 表,以便用户能够立即看到他引入的更改,而无需手动重新加载页面,我该怎么办?

非常感谢!

编辑:

它实际发生的情况如下:我有一个以 imgID.EXT 形式存储图像的文件夹和一个以 ID、EXT、TEXT 形式存储图像数据的数据库。Data.php 加载一个按 ID 排序的图像列表以及它们自己的文本,并具有修改列表的按钮(就像每个图像都有上移按钮、下移按钮、删除按钮)。当我调用 moveup 时,我转到 action.php,它会更改图像的 ID,将其在列表中向上移动并更改图像文件夹中的名称,然后返回 data.php。

重定向后,我看到图像的位置与以前相同,但例如图像#5 的文本正确地与图像#4 的文本交换。当我使用 F5(或浏览器按钮重新加载页面)刷新时,image#5 与 image#4 交换,一切正常。我想在不需要使用 F5 的情况下交换任何东西,但就是不明白问题出在哪里。

4

1 回答 1

0

在您的用户加载 data.php 之前,mySQL 可能还没有完成在数据库中插入/更新您的行。我曾经遇到过这个问题,并且在我的标头重定向之前通过 sleep(1) 解决了这个问题。

这不是最好的解决方案,但它解决了问题。最好在显示成功通知后使用一些 javascript 来处理表单或重定向用户。

于 2013-04-28T12:58:44.510 回答