javascript:Ajax與Comet

來源:互聯網
上載者:User

標籤:state   改變   style   text   script   size   star   pos   request對象   

一:使用XMLHttpRequest對象

  ajax的核心是XMLHttpRequest對象。IE7以下的瀏覽器XHR定義方法不同。對於較進階的瀏覽器 var xhr = new XMLHttpRequest(). 

var xhr  = new XMLHttpRequest();xhr.open()xhr.send(null)

xhr.open接收三個參數,第一個為發送方式get或者post。第二個參數是URL,第三個參數是布爾值,是否是非同步。

xhr.send(null),參數為向伺服器發送的資料,如果沒有,必須寫上null.

瀏覽器的響應資料作為xhr的屬性:respenseText,responseXML,status,statusText。status的狀態為200表示成功,狀態為304表示內容沒有被修改,可以直接使用緩衝。

  2)非同步請求下,xhr的屬性readyState,表示當前活動狀態,等於4時表示成功,每當狀態改變時都會調用onreadystatechange()事件,該事件的定義必須放在xhr.open函數之前。

  xhr.abort()取消非同步請求

  3)設定和擷取http請求的頭部資訊

    通過方法xhr.setRequestHeader(頭部欄位名稱名稱,要設定的值)進行設定。

    擷取響應的頭部資訊:xhr.getResponseHeader(頭部欄位名稱) , getAllResponseHeaders()擷取所有的頭部資訊

  4)get請求--url字串編碼問題

    url中的每個字串必須要使用encodeURLComponent()進行編碼,例如example.php?name1=value1&name2=value2

  5) post請求

    向伺服器發送資料,xhr.send(data)。FormData對象,定義發送的表單對象,var data = new FormData(),data.append(key,value),FormData對象是在xhr2級中出現的。

  6)timeout 逾時設定

    xhr.timeout  = 1000hs。當逾時時會觸發ontimeout事件,xhr.ontimeout = function(){}

var xhr  = new XMLHttpRequest();xhr.onreadystatechange = function(){  if (xhr.readystate == 4)       {    try{    if((xhr.statue>=200 && xhr.status<=300)||xhr.status==304)          {xhr.responseText}}  catch(ex){//假設有ontimeout處理事件}}       }xhr.open();xhr.timeout = 1000;xhr.ontimeout = function(){}xhr.send(null)

   

二:使用XMLHttpRequest事件

  進度事件:有以下6個進度事件。loadstart、progress、error、abort、load、loadend。

  1) 使用load事件最佳化:

var xhr  = new XMLHttpRequest();xhr.onload = function(){          try{    if((xhr.statue>=200 && xhr.status<=300)||xhr.status==304)          {xhr.responseText}}  catch(ex){//假設有ontimeout處理事件}      }xhr.open();xhr.timeout = 1000;xhr.ontimeout = function(){}xhr.send(null)

瀏覽器只要接收到伺服器響應,不管狀態如何都會觸發load事件,因此必須要檢查status.

   2)使用progress事件建立進度條

    onprogress事件接收到一個event對象,event對象有個屬性target,指向XHR對象,另外還包括lengthComputabel(布爾值,表示是否可用), totalsize , position。

三:跨域Ajax通訊的限制

  CORS(跨域資源共用),其基本思想是自訂http頭部資訊,讓瀏覽器與伺服器進行溝通,從而決定請求是成功還是要失敗。

javascript:Ajax與Comet

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.