任何人都可以解释为什么会这样吗?在这里我的代码:
<script>
$(document).ready(function()
{
refresh();
});
function refresh()
{
$.getJSON('getMessageDetails.php', function (json) {
//alert(json.length);
//$("#subject1").html(json[0].subject);
//$("#unique_code1").html(json[0].unique_code);
$("#msg_id").html(json[0].id);
$("#subject").html(json[0].subject);
$("#unique_code").html(json[0].unique_code);
if (json.length > 0 )
{
//alert(json.length);
window.location.reload();
}
else
{
//do something
}
});
window.setTimeout(refresh,30000);
}
</script>
我想要做的是,如果json中出现一条新消息,则不会为空,请重新加载页面,如果没有新消息,请继续检查
现在发生了一个新消息,屏幕刚开始像疯了一样闪烁! 它必须重新加载一次,然后每30秒再次检查。有什么帮助吗?谢谢。
答案 0 :(得分:1)
我认为你应该这样做:
$(document).ready(function()
{
var int = setInterval(refresh,30000);
});
function refresh()
{
$.getJSON('getMessageDetails.php', function (json) {
//alert(json.length);
//$("#subject1").html(json[0].subject);
//$("#unique_code1").html(json[0].unique_code);
$("#msg_id").html(json[0].id);
$("#subject").html(json[0].subject);
$("#unique_code").html(json[0].unique_code);
if (json.length > 0 )
{
//alert(json.length);
window.location.reload();
}
else
{
//do something
}
});
}
答案 1 :(得分:0)
我认为你正在寻找setInterval
,因为它听起来像你想要每隔30秒调用你的函数而不是重新加载整个页面(这就是window.location.reload
所做的事情。)
示例:
function sayHello(){
alert('hello once again');
}
setInterval(sayHello,30000);
所以你需要做的是将AJAX调用包装在一个函数中,然后应用一个setInterval
来定义它何时重复。