【问题标题】:Get data from database without refresh whole page从数据库中获取数据而不刷新整个页面
【发布时间】:2010-03-24 23:45:52
【问题描述】:

我的项目是关于学校管理员的,我有一个名为 createClass.php 的页面,用户可以在其中插入成绩、个人资料等。当他按下“提交”页面时,名为 createdClass.php 的页面正在加载。在这个页面中,我有所有将数据插入数据库的代码,还有一个“if”结构,如果数据库中是另一个具有相同规范的类,则“类已经存在”。同样在第二页(createdClass.php)中,我有一个小表格,显示每个学生的位置。第一次所有单元格都是绿色的(这意味着那个地方是免费的),如果我点击其中一个,会出现一个弹出窗口,让我从那个地方添加有关学生的信息。如果一个地方很忙,单元格将是红色的(看这里:http://screencast.com/t/NzM2YzYxNjct)。最大的问题是只有在刷新页面后单元格才会变为红色(该地方要求从数据库中获取数据)。如果我按刷新出现“类已经存在”。为了测试我在评论中添加的代码,所有行分别验证和添加了教室。我认为我的问题可以用ajax解决。我在等一个答案。问候斯特凡

【问题讨论】:

  • 您的问题可以通过 AJAX 和长轮询或定期数据库请求来解决。
  • 你实际上并没有问过问题。

标签: php database ajax


【解决方案1】:

要从弹出窗口中刷新原始窗口,请使用这段 javascript:

window.opener.location.refresh();

【讨论】:

  • 我确实像你告诉我的那样,但问题是“刷新()”整个页面都在刷新,这意味着“类已经存在”所以不是一个好方法。感谢您的回答,如果您有其他想法,请随时说出来。问候斯特凡
【解决方案2】:

插入数据后必须将用户重定向到另一个页面(一般是在POST请求之后)。

更改 createClass.php 中的表单以指向同一页面并将您的数据库插入代码移动到该文件。

<?php

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    // insert the data here
    header('Location: /createdClass.php');
    exit();
}

?>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
...
</form>

(更新)流程将是这样的:

  1. 在 createClass.php 中向用户显示一个表单
  2. 当用户提交表单时,提交在同一个 createClass.php 中处理,该文件插入数据库行,然后不显示任何页面,但告诉浏览器转到“createdClass.php”。
  3. 现在浏览器加载 createClass.php,它只显示学生表(但不插入数据库!)。现在,您可以根据需要多次刷新 createClass.php,而不会产生副作用。

请注意,以上内容可能无法解决您的所有问题。如果没有更多信息(或代码),我无法提供更多帮助。

【讨论】:

  • 我认为你的方式很好,但我不明白我到底应该做什么。我需要另一个页面或如何?你能更精确一点吗?感谢您花时间帮助我。 //斯蒂芬
  • 非常感谢。我会尝试做一些事情,但我认为最好的主意是使用我认为的 Ajax。你能帮我处理 Ajax 吗?
  • 感谢 Yaggo 的回答。我照你说的做了,现在可以了。我放了一个 opener.reload();对于“studentAdded.php”,现在整个“createdClass.php”正在刷新,没有任何问题,并且数据只进入数据库一次。我的小问题是 header(),它不想工作,但我把 echo echo "";问候斯特凡
  • 关于 header() 问题,请阅读“记住...”部分:fi2.php.net/manual/en/function.header.php
猜你喜欢
  • 1970-01-01
  • 2013-07-18
  • 2017-05-02
  • 2016-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-23
  • 2021-02-11
相关资源
最近更新 更多