如何使用jQuery轻松刷新我的AJAX结果?

时间:2014-02-25 03:13:14

标签: jquery ajax reload

我正在编写一个脚本,可以从ajax调用中自动获取聊天消息。我希望能够每1000毫秒刷新一次内容,但是,setInterval似乎不能正常工作。由于我的脚本循环遍历xml文件的结果,然后通过追加将内容添加到我的html,它只是一遍又一遍地添加相同的结果。任何人都可以想到一种方法,我只能添加尚未加载到我的HTML的结果吗?

$(function(){
     $('#chat_messages').ready(function(){
        setInterval(function(){
        $.ajax({
            url: $('#chat_messages').attr("rel"),
            dataType: "xml",
            cache: false,
            statusCode: {
                404: function(){alert("404 not found!")}
            }
        })
        .done(function(xml){
            var sample = $("#sample").html();
                $(xml).find("message").each(function(){
                    var new_content = sample.replace('{author}', $(this).find("author_name").text());
                    new_content = new_content.replace('{content}', $(this).find("content").text());
                    new_content = new_content.replace('{datesent}', $(this).find("datesent").text());
                    $('#chat_messages').append(new_content);
                });
        })
        .fail(function(){
            alert("Ajax failed!");
        })
     }, 1000);
     });
});

HTML

        
    <!-- Sample message. -->
    <div id="sample" style="display: none;">

        <div class="block1" id="{message_id}">

                <h1>{author}</h1>

                <p>{content}</p>

                <h3>{datesent}</h3>

       </div>

    </div>

XML:

<message id="6">
<author_id>3</author_id>
<author_name>Scottyboy1988</author_name>
<recipient_id>1</recipient_id>
<recipient_name>HigH VolTagE</recipient_name>
<content>You're even more awesome!</content>
<datesent>38 Minutes</datesent>
<status>unread</status>
</message>

1 个答案:

答案 0 :(得分:0)

你有消息ID所以当你在js数组变量中加载更新最后显示的id时,然后在下一次调用中检查最后显示的值如果找到则继续显示消息体......