Php 如何仅在页面发生更改时刷新
好的,我在main.php是主视图区域的地方进行了设置,我希望它只在文件发生更改时获取getboardajax.php。该文件目前正在从数据库中获取数据,如果我在30秒钟内有.Ajax加载Ajax刷新,这将起作用,但是如果我键入注释,IM在键入注释的中间,然后刷新,这是个问题。所以我想知道是否有一种可能的方法可以避免遇到这个问题,或者是否有另一种方法可以解决这个问题,以及如何解决 main.phpPhp 如何仅在页面发生更改时刷新,php,jquery,ajax,Php,Jquery,Ajax,好的,我在main.php是主视图区域的地方进行了设置,我希望它只在文件发生更改时获取getboardajax.php。该文件目前正在从数据库中获取数据,如果我在30秒钟内有.Ajax加载Ajax刷新,这将起作用,但是如果我键入注释,IM在键入注释的中间,然后刷新,这是个问题。所以我想知道是否有一种可能的方法可以避免遇到这个问题,或者是否有另一种方法可以解决这个问题,以及如何解决 main.php <div id="postwrapper"> <div id=div1&
<div id="postwrapper">
<div id=div1>
<p> some text here fetched from mysql database</p>
</div>
<div class='div2'>
<form method='POST' action=''>
<input type='text' id='commentbox' name='commentbox' autocomplete='off'>
<input type='submit' value='Post Comment'>
</form>
</div>
</div>
$('#postwrapper').empty();
var $scores = $("#postwrapper");
setInterval(function () {
$scores.load("grabboardajax.php #postwrapper");
}, 3000);
这里的一些文本来自mysql数据库
$('#postwrapper').empty();
var$scores=$(“#postwrapper”);
setInterval(函数(){
$scores.load(“grabboardajax.php#postwrapper”);
}, 3000);
grabboardajax.php
<div id="postwrapper">
<div id=div1>
<p> some text here fetched from mysql database</p>
</div>
<div class='div2'>
<form method='POST' action=''>
<input type='text' id='commentbox' name='commentbox' autocomplete='off'>
<input type='submit' value='Post Comment'>
</form>
</div>
</div>
这里的一些文本来自mysql数据库
对于您所寻求的,没有快速简单的答案,但有几个选项供您考虑:
- 我的最爱
也可以看到关于长轮询的内容,因为它可能是最接近您想要实现的内容。尝试使用ajax和jquery查看长轮询:@this.Tony您是唯一能够回答这个问题的人:)这实际上取决于您的需要。堆栈溢出使用web套接字通知您对页面的新编辑和注释。如果您注意到它没有自动应用更新,它会放置一个小通知栏,上面写着“已对此帖子进行了编辑。单击以刷新它”。也许这就是你需要的。只需获取数据,但不要将其直接放在页面中。显示一个通知,并让用户自己在方便的时候显示。好吧,但是说既然ajax每30秒刷新一次,我怎么能在它不替换所有东西而只替换新的data@this.Tony有几种方法,但最简单的方法是将数据加载到隐藏的div中,而不是
$scores.load(“grabboadAjax.php#postwrapper”);
使其类似于$(“#myHiddenDiv”).load(“grabboadAjax.php#postwrapper”)
。一旦用户单击通知应用更新,将内容从#myhiddenddiv
复制到#postwrapper
。这是有道理的。尽管假设我在foreach循环中回显grabboaardajax.php数据,在这种情况下,它将回显40个不同的div,我猜您的方式也会在这个循环中起作用?@this.Tony我不是确定你最后的评论是什么意思。将你正在谈论的代码添加到你的问题中,以便我们可以查看它。