Php 如何仅在页面发生更改时刷新

Php 如何仅在页面发生更改时刷新,php,jquery,ajax,Php,Jquery,Ajax,好的,我在main.php是主视图区域的地方进行了设置,我希望它只在文件发生更改时获取getboardajax.php。该文件目前正在从数据库中获取数据,如果我在30秒钟内有.Ajax加载Ajax刷新,这将起作用,但是如果我键入注释,IM在键入注释的中间,然后刷新,这是个问题。所以我想知道是否有一种可能的方法可以避免遇到这个问题,或者是否有另一种方法可以解决这个问题,以及如何解决 main.php <div id="postwrapper"> <div id=div1&

好的,我在main.php是主视图区域的地方进行了设置,我希望它只在文件发生更改时获取getboardajax.php。该文件目前正在从数据库中获取数据,如果我在30秒钟内有.Ajax加载Ajax刷新,这将起作用,但是如果我键入注释,IM在键入注释的中间,然后刷新,这是个问题。所以我想知道是否有一种可能的方法可以避免遇到这个问题,或者是否有另一种方法可以解决这个问题,以及如何解决

main.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>

$('#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我不是确定你最后的评论是什么意思。将你正在谈论的代码添加到你的问题中,以便我们可以查看它。