提醒另一页

时间:2011-10-01 07:23:14

标签: php javascript jquery

我有一个index.php。 它具有登录功能。 假设我有2个用户A和B.

Page1(用户A的index.php) -with function(检查数据库中是否有变化,如果是:alert('message'))

Page2(用户B的index.php) - 单击按钮时应更新数据库

我已经可以更新数据库,page1中的函数已经可以工作,它可以检测到更改,但只有在重新加载时才能检测到。所以我想在page2更新数据库时重新加载Page1。我想在Page1中只使用setTimeout(某些东西,timeInterval),但它似乎不合适,因为每次重新加载时,Page1的组件都会闪烁。当且仅当我的数据库中有更改时,我希望Page1重新加载。我还想过将Page1的函数放在一个无限的while循环中,但它似乎也不合适,因为页面只是加载..

另一件事是,我被告知JSON和REST。所以我可以从脚本文件中访问数据库。但我不是那么知识渊博。我也不是jQuery。

我已经尝试过搜索从另一个页面刷新页面,但我发现的答案对我来说要么模糊或困难。我的页面名称相同,只是与登录的用户不同。但如果我能找到一种方法,那么我只会对我的页面名称做些什么。

还有其他方法吗?谢谢。

3 个答案:

答案 0 :(得分:0)

首先加载要更新的页面时,通过执行

将时间放在变量中

something = new Date().getTime();

向php发送XMLHttpRequest,检查数据库上次更新时间是否比使用ajax调用发送的时间更新。如果是,返回一些告诉javascript刷新页面的内容。如果没有,请让javascript在几秒钟内使用setTimeout拨打另一个电话。

如果你在使用jQuery之前学习了javascript的绳索会更好,所以我会在一秒内用一些脚本更新这个答案。

修改1:结帐https://developer.mozilla.org/en/AJAX/Getting_Started

使用jQuery进行ajax调用是jQuery最明智的用法之一,但如果你知道它是如何工作的话也会更好。

答案 1 :(得分:0)

因此,当更新可用时,您基本上需要服务器通知page1。你所看到的被称为“彗星”。看看这篇文章:

comet wikipedia

comet ajaxian

Comet编程可以使用ajax或iframes

完成

答案 2 :(得分:0)

创建pageC.php,检查数据库是否已更改,如果是,则输出1,否则不输出任何内容。

然后用jQuery和AJAX ......

<!DOCTYPE HTML>
<html lang="en-US">
<head>
  <meta charset="UTF-8">
  <title>Quick AJAX test</title>
  <!-- needs to be url to jquery, can be locally, or via CDN -->
  <script type="text/javascript" src="jquery"></script>
  <script type="text/javascript">
    // this executes all contained after page has fully loaded
    $(function(){
      // define function to check for changed database
      function checkNew(){
        // make AJAX GET request, and set callback function
        $.get('./pageC.php',function(data){
          // check if the data returned (page content) is 1
          if(data === '1')
            alert('The database has changed')
          // run the function to check again
          checkNew()
        })
      }
      // call the checking function to initialise the loop
      checkNew()
    })
  </script>
</head>
<body>

</body>
</html>