Php jQuery-每10秒调用一次ajax

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",

我有一个mysql反馈数据库,构造如下:

名称|位置|反馈

瑞安|英格兰|大力支持

显然有更多的条目。我正在尝试构建一个反馈div,它通过ajax每隔10秒显示一个新的反馈项

所以我构建了这个:

$(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
}