在登录表单提交时检查活动的Internet连接

时间:2015-06-07 11:52:34

标签: javascript asp.net ajax

在使用asp.net身份验证登录表单之前,我使用以下代码检查用户是否具有活动的Internet连接。如果checkOnline()脚本检测到活动的Internet连接,我只希望客户端表单身份验证请求通过。

此代码工作正常,但我讨厌使用async: false,因为它会锁定浏览器大约20秒,直到请求超时。通常我只会添加timeout设置,但在使用async: false时,此设置不可用。

我已经考虑过每隔5秒左右轮询一次连接,然后在按钮上添加一个禁用属性,但我觉得这个效率非常低,而且更喜欢检查用户提交登录表单的内容。

有什么可以替代解决方案?

Protected Sub Page_PreInit(sender As Object, e As System.EventArgs) Handles Me.PreInit

    Page.ClientScript.RegisterOnSubmitStatement(Me.GetType, "OnSubmitScript", "return checkOnline()")

End Sub


// CHECK ONLINE CONNECTIVITY 

function checkOnline() { 
    isConnected = null; 
    $.ajax({ 
         url: '/',
         async: false 
     }).done(function(isAdmin) { 
         isConnected = true; 
     }).fail(function (e) { 
         isConnected = false; 
         connectionError(); 
     }); 
return isConnected; 
}

1 个答案:

答案 0 :(得分:0)

怎么样:

function checkOnline() { 
    $.ajax({ 
         url: '/',
         async: true 
     }).done(function(isAdmin) { 
         callPostback(); 
     }).fail(function (e) { 
         connectionError(); 
     }); 
$("#lblPrompt").val("Please wait while we verify your Internet connection...");
return false; 
}

然后

callPostback()
{
    document.forms.form1.submit();
}

如果表单名称不同,则需要创建lblPrompt并将form1更改为正确的名称。

这样,用户将看到该消息并且您的页面未被锁定,并且在确认互联网连接时将发布表单。