Ajax技術細節

Ajax狀態碼xhr.readyStateajax

0:UNSENT 未發送,建立Ajax對象,默認值爲0
1:OPENED 執行xhr.open
2:HEADERS_RECEIVED 當前ajax請求已經發送,而且已經接收到服務器端返回的相應頭信息
3:LOADING 響應主體內容正在返回
4:DONE 相應主體內容已經返回到客戶端編程

Http網絡狀態碼

HTTP網絡狀態碼,記錄當前服務器返回信息的狀態xhr.statusjson

200:標識成功狀態瀏覽器

3開頭也表示成功,但服務器端作了特殊處理緩存

301:永久轉移(永久重定向),應用於域名遷移
302:臨時轉移(臨時重定向,新版本Http中307是臨時重定向),用於服務器負載均衡
304:從瀏覽器緩存中獲取數據,把不常更新的數據緩存到瀏覽器中服務器

4開頭,標識失敗狀態,多在客戶端網絡

400:請求參數錯誤
401:無權限訪問
404:訪問地址不存在負載均衡

5開頭,標識失敗狀態,多在服務器端異步

500:Internal Server Error 未知的服務器錯誤
503:Service Unavailable 服務器超負載async

Ajax經常使用屬性和方法

題目:Ajax中總共支持幾個方法?

狀態

  1. readyState:存儲當前Ajax狀態碼
  2. response/responseText/responseXML:接收服務器返回的相應主體內容

    • responseText最經常使用,接收的結果爲字符串格式(通常服務器返回的數據都是JSON格式字符串)
    • responseXML接收XML文檔數據
  3. status:記錄服務器端返回的HTTP狀態碼
  4. statusText:對返回狀態碼的描述
  5. timeout:設置當前Ajax請求的超時時間

方法

  1. abort():強制中斷Ajax請求
  2. getAllResponseHeaders():獲取所有的響應頭信息(獲取結果爲字符串文本)
  3. getResponseHeader(key):獲取指定屬性名的相應頭信息
  4. open():打開一個URL地址
  5. overrideMimeType():重寫數據的MIME類型
  6. send():發送Ajax請求
  7. setRequestHeader(key,value):設置請求頭信息

事件

  1. onabort():當Ajax被中斷,請求觸發此事件
  2. onreadystatechange:Ajax狀態發生改變,觸發此事件
  3. ontimeout:當Ajax請求超時,觸發此事件

JS編碼解碼

(非加密)正常編碼解碼

  1. escape/unescape:把中文漢字進行編碼解碼(通常只有JS支持)
  2. encodeURI/decodeURI:基本全部編程語言都支持
  3. encodeURIComponent/decodeURIComponent

(加密)編碼解碼

URL問號傳遞參數,encodeURI不能編碼一些特殊字符,只能使用encodeURLComponent處理

  1. 可逆加密
  2. 不可逆加密(基於MD5加密,可能會把MD5加密後的結果二次加密)

Ajax的同步和異步

Ajax任務:發送請求接收到相應主體內容(完整HTTP事務)

  • xhr.send():任務結束
  • xhr.readyState===4:任務結束

Ajax類庫的封裝

  • url:請求API地址
  • method:請求方式GET/POST
  • dataTpye:預設結果類型,不影響服務器的返回(服務器通常返回JSON格式字符串),若是預設爲json,類庫將服務器返回的字符串轉換爲json對象
  • cache:設置是否清除緩存,只對GET系列請求有效,默認是TRUE不清除緩存,手動設置爲FALSE,JQ類庫在請求URL的末尾追加一個隨機數來清楚緩存
  • data:經過DATA把一些信息傳遞給服務器(GET請求把DATA中的內容拼接在URL的末尾經過問好傳參的方式傳遞給服務器,POST請求把內容放在請求主體中傳遞給服務器)(DATA的值能夠設置爲兩種格式:字符串、對象)
  • async:設置同步或異步,默認是TRUE,表明異步,FALSE是同步
  • success:請求成功執行回調函數,並把獲取的結果做爲實參傳遞給回調函數
  • error:請求錯誤觸發回調函數
  • complete:完成,觸發回調函數
相關文章
相關標籤/搜索