如何在有网络连接时更新屏幕/网站?

时间:2011-10-09 19:48:52

标签: php javascript ajax

我正在尝试为地板信息设置一个显示屏幕,这是一个简单的网页。 ajax调用用于根据客户端用于更新信息的管理页面每10秒更新一次屏幕。

我的问题是,当没有互联网连接时,显示屏仍会更新并且不显示任何内容。我有什么方法可以改变下面的代码,说是否有互联网连接,然后更新数据库,如果没有网络连接,然后重置计时器,什么都不做。

    <script type="text/javascript">

        // Run the AJAX call to grab the data once
        $.ajax({
                type: "POST",       
                url: "ajax/getMessages.php?section=1", 
                data: "",
                 complete: function(data){  
                //print result in targetDiv  
                $('#content_1').html(data.responseText);  
                } 
            });

        // Then run the same script on a 10-second timer
        setInterval(function(){

            $.ajax({
                type: "POST",   
                url: "ajax/getMessages.php?section=1", 
                data: "",
                 complete: function(data){  
                //print result in targetDiv  
                $('#content_1').html(data.responseText);  
                } 
            });

        },10000);

    </script>

3 个答案:

答案 0 :(得分:2)

可能有其他方法可以做到这一点,但这可行:检查data.responseText是否包含任何内容:

if(data.responseText.length)
{
    // Display page
}

complete:函数中,如下所示:

complete: function(data){ 
    if(data.responseText)
    {
        $('#content_1').html(data.responseText);  
    }
} 

更好的方法是使用success:而不是complete:,因为只有在AJAX请求成功完成时才触发前者,这意味着您不必检查{{ 1}}。

data.length

答案 1 :(得分:1)

您可以使用textStatus中的complete(jqXHR, textStatus),其中包含以下任何内容:“成功”,“未修改”,“错误”,“超时”,“中止”或“parsererror”

        $.ajax({
            type: "POST",   
            url: "ajax/getMessages.php?section=1", 
            data: "",
            complete: function(data, textStatus)
            {
              //print result in targetDiv if successfull
              if (textStatus == 'success')
              {
                  $('#content_1').html( + ': ' + data.responseText);
              }
            } 
        });

请参阅http://api.jquery.com/jQuery.ajax/

答案 2 :(得分:0)

var timer = setInterval(function(){
        $.ajax({
            type: "POST",                           
            url: "ajax/getMessages.php?section=1", 
            data: "",
            success: function(data){  
             //print result in targetDiv  
             $('#content_1').html(data.responseText);  
            },
            error: function(){ clearInterval( timer ) } 
        });

    },10000);