我使用ajax将用户的帖子/注释保存到mysql表中,而不需要刷新页面。
首先:我有这个<div id="posts-container"></div>
第二:我尝试使用Jquery ()在表中循环并回显posts,并使用以下代码:
var auto_refresh = setInterval(function() {
$('.posts-container').load("refresh_p.php").fadeIn();
}, 0 );但是它不起作用,页面刷新但是内容不加载,有人知道为什么吗?
第三:如果我复制包含refresh_p.php并粘贴到数据中的代码,就会成功加载。有点奇怪?是。希望得到任何帮助:)
编辑:修复了它,问题是在refresh_p.php中,它期望参数'profile_id‘修改函数如下:
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‘后置容器’刷新一下。
我以前使用过这个函数来刷新聊天框,它起了作用,只刷新了我想要的div。但在这里,它刷新了整个页面。
发布于 2014-01-27 15:09:49
不要使用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();发布于 2014-01-27 15:06:34
var auto_refresh = setInterval(function(){
$('.posts-container').load("refresh_p.php").fadeIn(50);
},1000);将间隔从0更改为0(这只会创建一个疯狂的负载.)到1000毫秒(1秒)如果你的道路是正确的,应该能工作。
发布于 2014-01-27 15:13:52
确保您的间隔足够长,以便您的请求能够完成。还要考虑更少的实时选项,例如每15秒发送一组消息,在客户端依次显示它们。使用缓存优化服务器端的快速响应,并考虑使用json数据和客户端模板来代替html响应。
https://stackoverflow.com/questions/21384118
复制相似问题