我有一个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。
我已经尝试过搜索从另一个页面刷新页面,但我发现的答案对我来说要么模糊或困难。我的页面名称相同,只是与登录的用户不同。但如果我能找到一种方法,那么我只会对我的页面名称做些什么。
还有其他方法吗?谢谢。
答案 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编程可以使用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>