我正在使用此脚本通过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>
答案 0 :(得分:1)
setTimeout
仅触发一次。
您需要调用setInterval()
重复调用方法。
但是,您的url
看起来也无效。查询字符串中不允许使用{ }
和空白字符。此外,您应该将方法作为第一个参数传递给setTimeout
和setInterval
。
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>