window.location.reload();无法控制地重新加载页面?

时间:2011-08-31 09:22:00

标签: jquery json

任何人都可以解释为什么会这样吗?在这里我的代码:

<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秒再次检查。有什么帮助吗?谢谢。

2 个答案:

答案 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来定义它何时重复。