如何每1秒刷新一次mysql帖子

时间:2014-01-27 15:01:18

标签: javascript php jquery mysql ajax

我使用ajax将用户帖子/评论保存到没有页面刷新的mysql表中。

首先:我有<div id="posts-container"></div>

第二:我尝试使用Jquery load()在表中循环并使用以下代码回显帖子:

var auto_refresh = setInterval(function() {
                           $('.posts-container').load("refresh_p.php").fadeIn();
                       }, 0 );

但它不起作用,页面刷新但内容无法加载,有人知道为什么吗?

第三:如果我复制包含refresh_p.php的代码并粘贴到数据中,则成功加载。有点奇怪吗?是。希望得到任何帮助:))

修改 我修好了,问题出在refresh_p.php,它期待参数&#39; profile_id&#39; 我将功能修改为:

1:profile.php

search_user = document.getElementById('user_from').value; 
var auto_refresh = setInterval(function() {
                           $('.posts-container').load("refresh_p.php?search_user="+search_user).fadeIn();
                       }, 5000 );

2:refresh_p.php

$profile_id = $_GET['search_user'];

一切都很好,但现在整个页面每5秒刷新一次。我只想要div&#39; post-container&#39;刷新。

我之前使用此功能刷新聊天框并且它有效,只刷新我想要的div。但这里刷新了整个页面。

3 个答案:

答案 0 :(得分:3)

请勿使用setInterval。对jQuery加载完成的递归调用,这样就可以确保调用是在另一个之后发送的,而不是同时发送。

试试这个:

var auto_refresh =  function () {
    $('.posts-container').load("refresh_p.php", function(){
            setTimeout(auto_refresh, 800);
        }).fadeIn();
}
auto_refresh();

此外,.fadeIn()仅在第一次有效,之后您必须先隐藏div,然后再显示它。

演示:http://jsfiddle.net/P4P9a/1/(可能很慢,因为它正在加载整个页面)。

LE :由于我认为您没有返回HTML页面,因此您应该使用$.get代替$.load

 $('.posts-container').get("refresh_p.php", function(data){
          $(this).html(data);
          setTimeout(auto_refresh, 800);
 }).fadeIn();

答案 1 :(得分:0)

var auto_refresh = setInterval(function(){
    $('.posts-container').load("refresh_p.php").fadeIn(50);
},1000);

将间隔从0(这只会产生一个疯狂的负载......)更改为1000毫秒(1秒)。如果您的路径正确,应该可以工作。

答案 2 :(得分:0)

确保您的间隔时间足以满足您的要求。还要考虑较少的实时选项,例如每15秒发送一组消息,在客户端一个接一个地显示它们。优化服务器端以使用缓存进行快速响应,并考虑使用json数据和客户端模板而不是html响应。