我正在尝试为地板信息设置一个显示屏幕,这是一个简单的网页。 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>
答案 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);
}
}
});
答案 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);