Как легко обновить результаты AJAX с помощью jQuery?

Я пишу скрипт, который автоматически получает сообщения чата из вызова 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>

person ShoeLace1291    schedule 25.02.2014    source источник
comment
у вас есть доступ к серверному коду?   -  person andri    schedule 25.02.2014


Ответы (1)


У вас есть идентификатор сообщения, поэтому при загрузке обновите последний показанный идентификатор в переменной массива js, а затем при следующих вызовах проверьте последнее показанное значение, если оно найдено, продолжите, иначе покажите тело сообщения...

person itzmukeshy7    schedule 25.02.2014