我正在使用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>
答案 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>