我正在编写一个脚本,可以从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>
答案 0 :(得分:0)
你有消息ID所以当你在js数组变量中加载更新最后显示的id时,然后在下一次调用中检查最后显示的值如果找到则继续显示消息体......