页面刷新是如何工作的


How does page refresh work?

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

我有一个php页面包含一个表单(让我们说data.php)和一个表包含一个DB数据。表单通过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设置Header data.php,然后调用jscript Location .reload。同样,我在表格中没有任何变化。

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

非常感谢!

编辑:

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

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

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

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