AJAX簡單異步通信實(shí)例分析
本文實(shí)例講述了AJAX簡單異步通信的方法。分享給大家供大家參考。具體分析如下:
客戶端:向服務(wù)器發(fā)出一個空請求。
代碼如下:
<html>
<head>
<title>XMLHttpRequest</title>
<script language="javascript">
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("服務(wù)器返回: " + xmlHttp.responseText);
}
xmlHttp.send(null);
}
</script>
</head>
<body>
<input type="button" value="測試異步通訊" onClick="startRequest()">
</body>
</html>
服務(wù)器端:向客戶端直接返回一個字符串。
代碼如下:
<%@ Import Namespace="System.Data" %>
<%
Response.Write("異步測試成功,很高興");
%>
問題一:
由于IE 瀏覽器會自動緩存異步通信的結(jié)果,不會實(shí)時更新服務(wù)器的返回結(jié)果。(但Firefox 會正常刷新)
為了解決異步連接服務(wù)器時IE 的緩存問題,更改客戶端代碼如下:
var sUrl = "9-1.aspx?" + new Date().getTime(); //地址不斷的變化
xmlHttp.open("GET",sUrl,true);
在訪問的服務(wù)器地址末尾添加一個當(dāng)前時間的毫秒數(shù)參數(shù),使得每次請求的URL地址不一樣,從而欺騙IE 瀏覽器來解決IE 緩存導(dǎo)致的更新問題。
問題二:
當(dāng)測試程序時,如果客戶端和服務(wù)器端都在同一臺計算機(jī)上時,異步對象返回當(dāng)前請求的http狀態(tài)碼 status == 0 ,于是再次更改客戶端代碼如下:
//if(xmlHttp.readyState == 4 && xmlHttp.status == 200)
if( xmlhttp.readyState == 4)
{
if( xmlhttp.status == 200 || //status==200 表示成功!
xmlhttp.status == 0 ) //本機(jī)測試時,status可能為0。
alert("服務(wù)器返回: " + xmlHttp.responseText);
}
于是,最終的客戶端代碼如下:
<html>
<head>
<title>XMLHttpRequest</title>
<script language="javascript">
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) //本機(jī)測試時,status可能為0。
alert("服務(wù)器返回: " + xmlHttp.responseText);
}
}
xmlHttp.send(null);
}
</script>
</head>
<body>
<input type="button" value="測試異步通訊" onClick="startRequest()">
</body>
</html>
希望本文所述對大家的Ajax程序設(shè)計有所幫助。
相關(guān)文章
Ajax與mysql數(shù)據(jù)交互實(shí)現(xiàn)留言板功能
最近自己做了一個小demo,實(shí)現(xiàn)了Ajax與MySQL的數(shù)據(jù)交互,js部分用的是jq,后臺用的是PHP,數(shù)據(jù)庫是mysql,下面通過本文給大家詳細(xì)介紹下2016-12-12
使用Ajax實(shí)現(xiàn)簡單的帶百分比進(jìn)度條實(shí)例
最近做項(xiàng)目遇到這樣的需求要求當(dāng)進(jìn)行文件長傳保存等操作時,能在頁面顯示一個帶百分比的進(jìn)度條,給用戶一個好的交互體驗(yàn),下面通過實(shí)例代碼給大家介紹基于ajax實(shí)現(xiàn)帶百分比進(jìn)度條效果,需要的的朋友參考下吧2017-07-07
AJAX顯示加載中并彈出圖層遮擋頁面的實(shí)現(xiàn)示例
大家都知道AJAX的請求是異步的,這種異步的機(jī)制給我們帶來了體驗(yàn)上的優(yōu)化,但是同時我要求我們有更完善的思維去處理一個業(yè)務(wù)。當(dāng)用戶請求后長時間沒有回應(yīng)是一種非常不好的用戶體驗(yàn),所以我們可以在請求后利用AJAX顯示加載中并彈出圖層遮擋頁面,下面來看看實(shí)現(xiàn)方法。2016-12-12
Ajax調(diào)用restful接口傳送Json格式數(shù)據(jù)的方法
這篇文章主要介紹了Ajax調(diào)用restful接口傳送Json格式數(shù)據(jù)的方法的相關(guān)資料,非常不錯,具有參考借鑒價值,感興趣的朋友一起看下吧2016-07-07
ajax 登錄功能簡單實(shí)現(xiàn)(未連接數(shù)據(jù)庫)
未連接數(shù)據(jù)庫下實(shí)現(xiàn)ajax 登錄功能判斷登陸成功與失敗,喜歡ajax的朋友可以參考下哈,希望對大家有所幫助2013-05-05

