首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery -每10秒调用ajax

jQuery -每10秒调用ajax
EN

Stack Overflow用户
提问于 2011-04-16 15:40:33
回答 4查看 116.6K关注 0票数 42

我有一个mysql反馈数据库,如下所示:

名称/位置-位置反馈

瑞安·英格兰--大力支持

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

所以我建造了这个:

代码语言:javascript
复制
$(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文件:

代码语言:javascript
复制
$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>
    ";
} 

然而,这只显示了两个。它不再继续展示新的,它纯粹显示第一个,然后第二个,然后停止。

我做错了什么?谢谢:)

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-04-16 15:44:49

你想做setInterval()吗?

代码语言:javascript
复制
setInterval(function(){get_fb();}, 10000);

或者:

代码语言:javascript
复制
setInterval(get_fb, 10000);

或者,如果希望只在成功地完成调用之后运行它,则可以在.ajax().success()回调中设置它:

代码语言:javascript
复制
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(),如果您希望它运行,而不管结果如何:

代码语言:javascript
复制
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);
}

这里是这两个例子的一个例子。注意,成功只工作一次,因为jsfiddle在ajax调用上返回了404错误。

http://jsfiddle.net/YXMPn/

票数 73
EN

Stack Overflow用户

发布于 2011-04-16 15:46:39

代码语言:javascript
复制
setInterval(function()
{ 
    $.ajax({
      type:"post",
      url:"myurl.html",
      datatype:"html",
      success:function(data)
      {
          //do something with response data
      }
    });
}, 10000);//time in milliseconds 
票数 19
EN

Stack Overflow用户

发布于 2011-04-16 15:44:15

您可以尝试使用setInterval()来代替:

代码语言:javascript
复制
var i = setInterval(function(){
   //Call ajax here
},10000)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5687600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档