异步通信在生活中的例子_AJAX简单异步通信实例分析

本文实例讲述了AJAX简单异步通信的方法。分享给大家供大家参考。具体分析如下:

客户端:向服务器发出一个空请求。

代码如下:

XMLHttpRequest

var xmlHttp;

function createXMLHttpRequest(){

if(window.ActiveXObject)

xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");

else if(window.XMLHttpRequest)

xmlHttp = new XMLHttpRequest();

}

function startRequest(){

createXMLHttpRequest();

xmlHttp.open("GET","9-1.aspx",true);

xmlHttp.onreadystatechange = function(){

if(xmlHttp.readyState == 4 && xmlHttp.status == 200)

alert("服务器返回: " + xmlHttp.responseText);

}

xmlHttp.send(null);

}

服务器端:向客户端直接返回一个字符串。

代码如下:

Response.Write("异步测试成功,很高兴");

%>

问题一:

由于IE 浏览器会自动缓存异步通信的结果,不会实时更新服务器的返回结果。(但Firefox 会正常刷新)

为了解决异步连接服务器时IE 的缓存问题,更改客户端代码如下:

var sUrl = "9-1.aspx?" + new Date().getTime(); //地址不断的变化

xmlHttp.open("GET",sUrl,true);

在访问的服务器地址末尾添加一个当前时间的毫秒数参数,使得每次请求的URL地址不一样,从而欺骗IE 浏览器来解决IE 缓存导致的更新问题。

问题二:

当测试程序时,如果客户端和服务器端都在同一台计算机上时,异步对象返回当前请求的http状态码 status == 0 ,于是再次更改客户端代码如下:

//if(xmlHttp.readyState == 4 && xmlHttp.status == 200)

if( xmlhttp.readyState == 4)

{

if( xmlhttp.status == 200 || //status==200 表示成功!

xmlhttp.status == 0 ) //本机测试时,status可能为0。

alert("服务器返回: " + xmlHttp.responseText);

}

于是,最终的客户端代码如下:

XMLHttpRequest

var xmlHttp;

function createXMLHttpRequest(){

if(window.ActiveXObject)

xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");

else if(window.XMLHttpRequest)

xmlHttp = new XMLHttpRequest();

}

function startRequest(){

createXMLHttpRequest();

var sUrl = "9-1.aspx?" + new Date().getTime(); //地址不断的变化

xmlHttp.open("GET",sUrl,true);

xmlHttp.onreadystatechange = function(){

//if(xmlHttp.readyState == 4 && xmlHttp.status == 200)

if( xmlhttp.readyState == 4)

{

if( xmlhttp.status == 200 || //status==200 表示成功!

xmlhttp.status == 0) //本机测试时,status可能为0。

alert("服务器返回: " + xmlHttp.responseText);

}

}

xmlHttp.send(null);

}

希望本文所述对大家的Ajax程序设计有所帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值