【问题标题】:How does page refresh work?页面刷新如何工作?
【发布时间】:2013-04-22 04:46:39
【问题描述】:

我一直在 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 的情况下交换任何东西,但就是不明白问题出在哪里。

【问题讨论】:

  • 使用AJAX发布表单的值,然后使用js将结果添加到表格中。

标签: php javascript redirect refresh


【解决方案1】:

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

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

【讨论】:

  • 感谢您的评论!我刚刚注意到,当我返回 data.php 时,该表已正确读取 SQL 更改。该页面尚未读取的是图像 URL 的更改。我更好地解释一下:我有一个文件夹,其中上传的图像以 imgID.EXT 的形式保存,其中 ID 和 EXT 在名为 img 的 DB 表中读取,其中包含字段 ID、EXT 和 TEXT。 Data.php 从文件夹中加载图像并将其与任何图像关联到它自己的 TEXT 字段。当我从 Action 回到 Data 时,我可以看到 TEXT 的变化,但我必须刷新才能重新排序图像,我在主帖中写得更好。
  • 这很可能是缓存问题。旧图像仍会在您的浏览器缓存中。当您刷新时,它将重新加载此图像。更新后更改文件名可以解决此问题。
  • 嗯明白了,所以这取决于缓存。我将尝试以不同的方式解决,因为实际上更改文件名将是一个问题,因为页面布局依赖于图像名称。
  • 我实际上解决了引入一个脚本,该脚本在您被重定向到它之后使页面重新加载一次(使用 location.reload())。不知道这是否是最好的解决方案,但它正在工作。谢谢大家!
猜你喜欢
  • 2023-01-08
  • 2017-01-19
  • 1970-01-01
  • 2015-11-05
  • 2021-04-20
  • 2013-04-30
  • 2013-03-20
  • 2014-11-16
  • 1970-01-01
相关资源
最近更新 更多