所以进行了下面的改进,在submit之前,先检查网络是不是有问题,比如访问一个页面CtrlTest.aspx,看看是不是正常。
本来写这个程序的时候,只判断了xh.status结果发现总是不成功。
原来调用xh.send()时,如果网络不通,会出异常的。
下面的代码应该是可以的。
<%@ Page language="c#" Codebehind="CtrlTest.aspx.cs" AutoEventWireup="false" Inherits="WGSys.Web.WaterWeb.CtrlTest" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>ConnectionTest</title>
<SCRIPT language="javascript">
var isConn;
function CanSubmit()
{
var d;
d = new Date();
xh = new ActiveXObject("Microsoft.XMLHTTP")
xh.onreadystatechange = getReady
try
{
xh.open("GET","CtrlTest.aspx?rnd="+d.getTime(),false);
xh.send();
}
catch(ex)
{
isConn=false;
}
if(!isConn)
{
alert('现在网络有问题,请稍后再提交!');
}
return isConn;
}
function getReady()
{
if(xh.readyState==4)
{
if(xh.status==200)
{
isConn=true;
}
else
{
isConn=false;
}
}
}
</SCRIPT>
</HEAD>
<BODY>
<FORM id="Form1" method="post" runat="server">
<INPUT type="submit" value="Button" onclick="return CanSubmit()">
</FORM>
</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>ConnectionTest</title>
<SCRIPT language="javascript">
var isConn;
function CanSubmit()
{
var d;
d = new Date();
xh = new ActiveXObject("Microsoft.XMLHTTP")
xh.onreadystatechange = getReady
try
{
xh.open("GET","CtrlTest.aspx?rnd="+d.getTime(),false);
xh.send();
}
catch(ex)
{
isConn=false;
}
if(!isConn)
{
alert('现在网络有问题,请稍后再提交!');
}
return isConn;
}
function getReady()
{
if(xh.readyState==4)
{
if(xh.status==200)
{
isConn=true;
}
else
{
isConn=false;
}
}
}
</SCRIPT>
</HEAD>
<BODY>
<FORM id="Form1" method="post" runat="server">
<INPUT type="submit" value="Button" onclick="return CanSubmit()">
</FORM>
</BODY>
</HTML>