(轉)XMLHttpRequest basic

          客戶端利用XMLHTTP發送請求得到服務端應答數據,并用Javascript操作DOM最終更新頁面- 又稱無刷新更新頁面,有代替傳統web開發中采用form(表單)遞交方式更新web頁面的趨勢。
          XMLHTTP依賴于XMLHttpRequest完成從客戶端的請求到服務端的應答。XMLHttpRequest提供了兩個方法open和send。open方法用于初始化XMLHttpRequest
          對象、指示請求的方式(get、post等)、安全性連接等,在調用open方法后必須調用send方法發送Http Request(Http請求)以返回Http Reponse(Http應答)。

           

           

          看MSDN中對send方法的簡介:
          This method is synchronous or asynchronous, depending on the value of the bAsync parameter in the open call. If open is called with bAsync == False, this call does not return until the entire response is received or the protocol stack times out. If open is called with bAsync == True, this call returns immediately.
          send方法是否同步或異步工作取決于open方法中的bAsync參數,如果bAsync == False表示send方法工作在同步狀態下,發送http請求后,只有當客戶端接收到來自服務端的全部應答數據或協議棧超時返回!反之bAsync == True,工作在異步狀態下,直接返回。

          實際運用中,設置bAsync = True, 使send方法被調用后XMLHttpRequest工作在異步狀態,如果設為同步狀態可能會導致不必要的長時間等待!

          另外,無論在同步或異步請求工作狀態下,XMLHttpRequest如何得到由服務端返回的應答數據?
          看下面的示例代碼:

          <script>
          var xmlhttp=null;
          function PostOrder(xmldoc)
          {
          varxmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
          xmlhttp.Open("POST", "http://myserver/orders/processorder.asp", false);
          xmlhttp.onreadystatechange= HandleStateChange;
          xmlhttp.Send(xmldoc);
          }
          function HandleStateChange()
          {
          if (xmlhttp.readyState == 4)
          {
          alert("Result = " + xmlhttp.responseXML.xml);
          }
          }
          </script>

          服務端返回應答數據并完全被加載, 可通過XMLHttpRequest屬性readState獲知,其值變為4 - COMPLETED (已加載完成),
          當readState變化時會調用XMLHttpRequest對象中的回調函數onreadstatechange,在函數中驗證xmlhttp.readyState == 4,
          這里得到的是XML文檔(如果服務端有返回xml文檔數據).

          posted on 2008-12-18 20:37 liujg 閱讀(151) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導航

          統計

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          相冊

          收藏夾

          boddiy

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 广平县| 巧家县| 金寨县| 西藏| 昔阳县| 宁明县| 廊坊市| 宜春市| 咸丰县| 鹤峰县| 潞西市| 修文县| 建昌县| 西乌珠穆沁旗| 托克托县| 兖州市| 海盐县| 湘潭市| 仙居县| 唐河县| 昌平区| 丘北县| 霍山县| 侯马市| 茶陵县| 阿城市| 若尔盖县| 太和县| 沐川县| 淮北市| 贺兰县| 江西省| 渝北区| 阿克| 嫩江县| 怀化市| 资阳市| 博客| 乌兰浩特市| 襄樊市| 天等县|