如何通过ajax调用检查网络连接

Posted

技术标签:

【中文标题】如何通过ajax调用检查网络连接【英文标题】:how to check net connection through ajax call 【发布时间】:2015-03-05 00:09:31 【问题描述】:

我们试图检查身份验证。我们有用户名和密码。我们需要 net_Work 是否在 mobile.authentication 中可用。通过在线检查。互联网不在移动设备中我们需要先显示警报连接互联网 Ajax 调用验证检查:-

function authentication()

 username=$("#name").val();
 password=$("#psw").val();
$('#empty').append("Authentication  Will be Checking.......");
$.ajax(
        url: 'http://183.82.0.221:1234/MyService.svc/GetAuthenticatedUserData/'+username+'/'+password+'',
        dataType: 'jsonp',
        type:'get',
        cache:false,
        success:function(data) 
 if(data==1)
 
 first();
 
 else
 
 alert("Authentication Failed");
 

);

以上代码仅适用于互联网有移动设备。它工作正常。如果手机没有互联网,它不会响应任何东西。

如果手机没有网络,我们需要显示警报(“此应用需要网络,所以请先连接”);

【问题讨论】:

与论坛网站不同,我们不使用“谢谢”、“任何帮助表示赞赏”或Stack Overflow 上的签名。请参阅“Should 'Hi', 'thanks,' taglines, and salutations be removed from posts?。顺便说一句,这是“提前致谢”,而不是“致谢”。 【参考方案1】:

如果你使用的是html5那么解决方法很简单。javascript中有一个属性

 navigator.onLine

通过使用此属性,您可以检查是否有互联网连接。如果有互联网连接,则进行 ajax 调用,否则将您的数据存储在浏览器本地存储中,并在应用程序连接互联网时将其推送回服务器。

现在,如果您使用的是 html4,那么解决方案会有点棘手。在 ajax 调用中,还有一个“错误”事件侦听器。因此您可以通过以这种方式纠正代码来使离线工作。

error: function(x, t, m) 
    if(t==="timeout") 
        alert("Means there is no internet connectivity");
        now_run_your_offline_function()
     else 
        alert(t);
    

这里的t可以是"timeout"、"error"、"notmodified"和"parsererror"

如果您正在使用电话间隙。然后检查此解决方案。 android 2.3 and Phonegap, navigator.online does not work

在您的情况下,最终代码将是。

function authentication()

 username=$("#name").val();
 password=$("#psw").val();
$('#empty').append("Authentication  Will be Checking.......");
$.ajax(
    url: 'http://183.82.0.221:1234/MyService.svc/GetAuthenticatedUserData/'+username+'/'+password+'',
    dataType: 'jsonp',
    type:'get',
    cache:false,
    timeout: 1000,
    error: function(x, t, m) 
if(t==="timeout") 
    alert("Means there is no internet connectivity");
 else 
    alert(t);
,
    success:function(data) 
 if(data==1)

first();

else
 
 alert("Authentication Failed");


);

【讨论】:

感谢回复我们正在开发 Phone-Gap 应用程序,因此 navigator.onLine 对我不起作用。它总是返回 true 那么您可以尝试第二种解决方案。这将适用于您的情况。 如你所说尝试过。在移动设备中删除了 wifi 连接,但我没有收到任何警报。请指导我 在ajax调用中添加超时:1000,然后尝试。 (xmlhttprequest, textstatus, and message) 是 X,t,m

以上是关于如何通过ajax调用检查网络连接的主要内容,如果未能解决你的问题,请参考以下文章

上传大图像时网络连接中止后恢复或重新启动ajax请求?

在后台检查网络连接并上传数据

如何在Android中检查网络内的互联网连接(通过HOTSPOT使用其他设备的互联网)

Objective C: iOS 14 如何做网络隐私权限检查

如何检查linux是不是可以连接网络

如何检查网络连接?