首頁 >web前端 >js教程 >AJAX簡單非同步通訊實例分析

AJAX簡單非同步通訊實例分析

亚连
亚连原創
2018-05-25 11:44:031569瀏覽

這篇文章主要介紹了AJAX簡單異步通信,實例分析了Ajax異步通信的技巧與相關注意事項,具有一定參考借鑒價值,需要的朋友可以參考下

本文實例講述了AJAX簡單異步通訊的方法。分享給大家供大家參考。具體分析如下:

客戶端:向伺服器發出空請求。

程式碼如下:


<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("服务器返回: " + xmlHttp.responseText);
  }
  xmlHttp.send(null);
}
</script>
</head>
<body>
<input type="button" value="测试异步通讯" onClick="startRequest()">
</body>
</html>


#伺服器端:直接向客戶端傳回一個字符串。

<%@ Page Language="C#" ContentType="text/html" ResponseEncoding="gb2312" %>
<%@ Import Namespace="System.Data" %>
<%
    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);
}


於是,最終的客戶端程式碼如下:

<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) //本机测试时,status可能为0。
      alert("服务器返回: " + xmlHttp.responseText);
     }
  }
  xmlHttp.send(null);
}
</script>
</head>
<body>
<input type="button" value="测试异步通讯" onClick="startRequest()">
</body>
</html>

上面是我整理給大家的,希望今後會對大家有幫助。 相關文章:

######AJAX機制詳解以及跨域通訊###############Ajax無刷新分頁的效能最佳化方法## ######################基於firefox實作ajax圖片上傳####################

以上是AJAX簡單非同步通訊實例分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn