如何不断刷新保存帖子ID的个人div?

时间:2016-04-09 23:16:50

标签: php ajax

我正在使用PHP,AJAX,MySQL等进行博客。像往常一样,每个帖子都有自己的ID,在帖子中你可以看到评论。

我要做的是通过使用AJAX调用div文档并使用comments.php将其放入div来刷新评论的$('#comments').html(data);

每隔5秒执行此操作以实时维护评论,但问题是当div第一次刷新时,div会丢失帖子的ID并说是undefined

如何在不丢失帖子ID的情况下刷新任何div

如果我使用帖子文件中的典型comments.php调用include(file.php)文件,我没有问题,但是使用这种方式我无法刷新内容。

以下是代码:

post.php中:

<script type="text/javascript">  
$(document).ready(function(){  
    $.ajax({  
        url: 'support/comments.php',  
        success: function(data) {  
            $('#comments').html(data);  
        }  
    });    
});  
</script> 

div将显示结果:

<div id="comments">
</div> 

用于刷新div

的脚本
<script language="Javascript" type="text/javascript">
function refreshDivs(divid, secs, url) {
    // define our vars
    var divid,secs,url,fetch_unix_timestamp;

    // The XMLHttpRequest object
    var xmlHttp;
    try {
        xmlHttp=new XMLHttpRequest(); // Firefox, Opera 8.0+, Safari
    } catch (e) {
        try {
            xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); // Internet Explorer
        } catch (e) {
            try {
                xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {
                alert("your browser doesn't support ajax.");
                return false;
            }
        }
    }
    // Timestamp para evitar que se cachee el array GET
    fetch_unix_timestamp = function () {
        return parseInt(new Date().getTime().toString().substring(0, 10))
    }
    var timestamp = fetch_unix_timestamp();
    var nocacheurl = url+"?t="+timestamp;

    // the ajax call
    xmlHttp.onreadystatechange = function () {
        if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
            document.getElementById(divid).innerHTML=xmlHttp.responseText;
            setTimeout(function(){refreshDivs(divid,secs,url);},secs*1000);
        }
    }
    xmlHttp.open("GET",nocacheurl,true);
    xmlHttp.send(null);
}
window.onload = function startrefresh () {
    //update content on real time
    refreshDivs('comments',10,'support/comments.php'); 
}
</script>

2 个答案:

答案 0 :(得分:0)

您可以在网址中传递帖子ID,如下所示:

url: 'support/comments.php?id=<?= $post_id ?>'

然后使用setTimeout包装调用,如下所示:

window.setInterval(function(){
    $.ajax({  
        url: 'support/comments.php?id=<?= $post_id ?>',  
        success: function(data) {  
            $('#comments').html(data);  
        }  
    });
}, 5000);

弃掉refreshDiv。

这是假设comments.php检索注释,而其他一些代码则发布它们。

答案 1 :(得分:0)

好的家伙我解决了它...我会留下代码,以防有人可能有同样的问题...我做的是构建一个隐藏的输入并把这个输入使用它的值像id的帖子,然后我用#('div')。val将这个输入的值发送到脚本,最后我把那个值发送到comments.php文件,一旦那里....我用了查询语句中的值做比较,最后可以在正确的帖子中得到评论

这是代码

<script>
$(document).ready(function() {
    window.setInterval(function(){
//Comentarios
              var id = $("#idcomment").val();
        $.get("support/comments.php", { idpost: id }, function(LoadPage){
        $("#comment").html(LoadPage);
        });
    }, 5000); 
    });
</script>