Php jQuery-每10秒调用一次ajax
我有一个mysql反馈数据库,构造如下: 名称|位置|反馈 瑞安|英格兰|大力支持 显然有更多的条目。我正在尝试构建一个反馈div,它通过ajax每隔10秒显示一个新的反馈项 所以我构建了这个:Php jQuery-每10秒调用一次ajax,php,jquery,ajax,Php,Jquery,Ajax,我有一个mysql反馈数据库,构造如下: 名称|位置|反馈 瑞安|英格兰|大力支持 显然有更多的条目。我正在尝试构建一个反馈div,它通过ajax每隔10秒显示一个新的反馈项 所以我构建了这个: $(document).ready(function(){ new get_fb(); }); function get_fb(){ var feedback = $.ajax({//Ajax type: "POST",
$(document).ready(function(){
new get_fb();
});
function get_fb(){
var feedback = $.ajax({//Ajax
type: "POST",
url: "feedback.php",
async: false
}).responseText;//end of ajax
$('div.feedback-box').html(feedback).delay(10000).queue(function() {
new get_fb();
});
}
这是我的PHP文件:
$result = mysql_query("SELECT * FROM feedback ORDER BY RAND() LIMIT 0,1");
while($row = mysql_fetch_array($result))
{
$name = $row['name'];
$location = $row['location'];
$feedback = $row['feedback'];
echo "
<p>Name: $name, Location: $location, Feedback: $feedback.</p>
";
}
$result=mysql\u查询(“按兰德从反馈订单中选择*限制0,1”);
while($row=mysql\u fetch\u数组($result))
{
$name=$row['name'];
$location=$row['location'];
$feedback=$row['feedback'];
回声“
名称:$Name,位置:$Location,反馈:$Feedback
";
}
然而,这只显示了两个问题。它不会一直显示新的,它只显示第一个,然后是第二个,然后停止
我做错了什么?谢谢:)您可以试试setInterval():
是否要执行
setInterval()
或:
或者,如果希望它仅在成功完成调用后运行,则可以在.ajax().success()
回调中设置它:
function get_fb(){
var feedback = $.ajax({
type: "POST",
url: "feedback.php",
async: false
}).success(function(){
setTimeout(function(){get_fb();}, 10000);
}).responseText;
$('div.feedback-box').html(feedback);
}
或者使用.ajax().complete()
function get_fb(){
var feedback = $.ajax({
type: "POST",
url: "feedback.php",
async: false
}).complete(function(){
setTimeout(function(){get_fb();}, 10000);
}).responseText;
$('div.feedback-box').html(feedback);
}
下面是这两种方法的演示。注意,成功只起作用一次,因为JSFIDLE在ajax调用中返回404错误
这对我很有效
setInterval(ajax_query, 10000);
function ajax_query(){
//Call ajax here
}
我注意到我删除了代码中的.responseText
部分,这会破坏功能。看我最后一次编辑。刚刚回到我的这个项目。这个适合使用吗?我的意思是这会不会给服务器造成压力?该网站只是一家电气公司,实际上规模不大/如果是每10秒一次,只有在用户完成最后一次之后,并且用户基数相对较小(考虑到如果你把它放在成功回调中,它每次都会重复。如果它是一个函数,这不是正确的方法。曾经我使用setInterval for ajax,间隔5秒,让页面连续打开6小时,整个浏览器都挂起,CPU使用率一直是23%+)(由于采用双核超线程CPU,几乎有一个内核的性能达到100%)。似乎setInterval会导致某种cpu/内存泄漏,如果您的客户端长时间盯着您的网页,这对他们来说非常不可靠。@Muhammed-您的url属性上有一个未对齐的双引号。@Jared感谢您的提及,@Maerlyn感谢您的更正。当网页有很多jquery函数和当前页面上的数据
function get_fb(){
var feedback = $.ajax({
type: "POST",
url: "feedback.php",
async: false
}).success(function(){
setTimeout(function(){get_fb();}, 10000);
}).responseText;
$('div.feedback-box').html(feedback);
}
function get_fb(){
var feedback = $.ajax({
type: "POST",
url: "feedback.php",
async: false
}).complete(function(){
setTimeout(function(){get_fb();}, 10000);
}).responseText;
$('div.feedback-box').html(feedback);
}
setInterval(function()
{
$.ajax({
type:"post",
url:"myurl.html",
datatype:"html",
success:function(data)
{
//do something with response data
}
});
}, 10000);//time in milliseconds
setInterval(ajax_query, 10000);
function ajax_query(){
//Call ajax here
}