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

How to update the screen/website only when there is a network connection?

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
    <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);

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

1
2
3
4
if(data.responseText.length)
{
    // Display page
}

complete:函数中,如下所示:

1
2
3
4
5
6
complete: function(data){
    if(data.responseText)
    {
        $('#content_1').html(data.responseText);  
    }
}

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// Run the AJAX call to grab the data once
$.ajax({
    type:"POST",      
    url:"ajax/getMessages.php?section=1",
    data:"",
    success: function(data) {  
        // Print result in targetDiv  
        $('#content_1').html(data.responseText);  
    },
    error: function() {
        // Error handling code
    }
});

// Then run the same script on a 10-second 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() {
            // Error handling code
        }
    });
}, 10000);


您可以使用textStatus中的textStatus,它将是以下任何一种:"success","notmodified","error","timeout","abort"或"parsererror"。

1
2
3
4
5
6
7
8
9
10
11
12
13
        $.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/


1
2
3
4
5
6
7
8
9
10
11
12
13
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);