如何在页面上创建Ajax自动刷新<div>标签?</div>

时间:2011-03-11 06:59:15

标签: jquery ajax

我正在使用此脚本通过ajax获取新评论。但是,setTimeout方法似乎不起作用,因为我的内容不会每4000毫秒刷新一次。有什么建议?当我删除document.ready(function)({.....});它根本不加载我的页面

<script type="text/javascript"> 
$(document).ready(function(){
    function updateMsg() {
        $.ajax({
           url: "/recent/messages/{{ chat.key.id }}",
           cache: false,
           success: function(html){
                $("#chatcontent").html(html);
           }
        });
    setTimeout('updateMsg()', 4000);
    }
    updateMsg();
});
</script>

3 个答案:

答案 0 :(得分:1)

在指定的超时后,

setTimeout仅触发一次

您需要调用setInterval()重复调用方法。

但是,您的url看起来也无效。查询字符串中不允许使用{ }和空白字符。此外,您应该将方法作为第一个参数传递给setTimeoutsetInterval

setInterval(updateMsg, 4000);

<击>


格式化代码后,我必须纠正自己。您在setTimeout内呼叫updateMsg(),而工作。所以我想,这只是你的查询字符串的问题。但是,您仍然应该将方法传递给setTimeout

$(document).ready(function(){
    function updateMsg() {
        $.ajax({
           url: "/recent/messages/" + chat.key.id,
           cache: false,
           success: function(html){
                $("#chatcontent").html(html);
           }
        });
    setTimeout(updateMsg, 4000);
    }
    updateMsg();
});

答案 1 :(得分:1)

实际上看起来上面的代码会起作用,因为最初调用函数updateMsg()然后每次都在该函数的末尾调用setTimeout。我怀疑这是 url参数是错误的。

jAndy是对的,代码更好地写成:

$(document).ready(function(){
    function updateMsg() {
        $.ajax({
           url: "/recent/messages/{{ chat.key.id }}",
           cache: false,
           success: function(html){
                $("#chatcontent").html(html);
           }
        });
    }

    setInterval(updateMsg, 4000);
});

另外,我建议您使用$ .load()方法而不是$ .ajax:

$('#chatcontent').load("/recent/messages/{{ chat.key.id }}");

答案 2 :(得分:0)

<script type="text/javascript"> 

    var div;

    $(document).ready(function(){

        div = $('#chatcontent');

        setInterval(updateMsg, 1000);


    });


    function updateMsg() {

        //alert("hello");       

        $.ajax({
            url: "test.php",
            cache: false,

            success: function(html){

            $(div).append(html);

        }

        }); 

    }
</script>

<div id="chatcontent">hello</div>