js021-Ajax與Cometphp
本章內容:html
使用XMLHttpRequet對象跨域
使用XMLHttpRequet事件瀏覽器
跨域Ajax通訊的限制服務器
Ajax技術的核心是XMLHttpRequet對象cookie
21.1 XMLHttpRequet對象app
建立XHR對象:異步
var xhr = createXHR();ide |
21.1.1 XHR用法post
在使用XHR對象是,調用的第一個方法是open().該方法接收三個參數:要發送請求的類型(「get」、」post」 等 ),請求的URL和表示是否異步發送請求的布爾值。
xhr.open("get", "example.php", fasle); |
調用open()方法並不會真正發送請求,而是啓動一個請求一備發送 |
要發送特定請求,要像以下調用send()方法
xhr.open("get", "example.txt", fasle); xht.send(null); |
send()方法接收一個參數:要做爲請求主題發送的數據,若是不須要經過請求主發送數據則用null。
由於該請求是同步的,JS代碼會等到服務器響應後才繼續執行
21.1.2 HTTP頭部信息
默認狀況下,在發送XHR請求的同時,還會發送下列頭部信息:
頭部信息 |
說明 |
Accept |
瀏覽器可以處理的內容類型 |
Acce-pt-Charset |
瀏覽器可以顯示的字符集 |
Accept-Encoding |
瀏覽器可以處理的壓縮編碼 |
Accept-Language |
瀏覽器當前設置的語言 |
Connection |
瀏覽器與服務器之間的鏈接類型 |
Cookie |
當前頁面設置的任何Cookie |
Host |
發出請求的頁面所在的域 |
Referer |
發出請求的頁面的URI |
User-Agent |
瀏覽器的用戶代理字符串 |
21.1.3 GET請求
使用get請求時常常會發生錯誤:查詢字符串的格式有問題。
查詢字符串的沒個參數名稱和值都必須使用encodeURIComponent()進行編碼,而後才能放到url的末尾。並且全部的名-值對都必須用和號(&)分開。
xhr.open("get", "example.php", name1 = value1&name2 = value2); |
21.1.4 post請求
用於向服務器發送應該被保存的數據。Post應該把數據做爲請求的主題提交,get請求傳統上不是這樣的。Post方法能夠傳入多個參數,且格式不限。
發送post請求的第二部是想sent()方法中傳入某些數據。
21.2 XMLHttpRequest 2級
21.2.1 formdata
表單數據序列化。
Formdata爲序列化表單以及建立與表單格式相同過得數據提供便利。以下建立了一個formdata對象,並向其添加了一些數據:
var data = new FormData(); data.append ("name", "meimei"); |
append()方法接收兩個參數:鍵和值。分別對應表單字段的名字和字段中包含的值。能夠添加任意多個鍵值對。
21.2.2 超時設定
Timetout 屬性,表示請求在等待相應多少好秒後就終止。在給timeout設置一個數值後,若是在規定的事件內瀏覽器尚未接收到響應,那麼就會觸發timeout事件,進而會調用ontimeout事件處理程序。
21.2.3 overrideMimeType()方法
調用該方法必須在send()方法以前,才能保證重寫相應的MIME類型。
21.3 進度事件
有如下6個進度事件:
事件 |
說明 |
loadstart |
在接收到響應數據的第一個字節時觸發 |
progress |
在接收響應期間持續不斷的觸發 |
error |
在請求發生錯誤是觸發 |
abort |
在由於調用abort()方法而終止鏈接時觸發 |
load |
在接收到完整的相應數據時觸發 |
loadend |
在通訊完成或者觸發error、abort或load事件後觸發。 |
21.3.1 load事件
21.3.2 progress事件
21.4 跨資源共享
21.4.1 IE對CORS 的實現
XDR(XDomainRequest)類型,該對象與XHR類似。如下是XDR和XHR之間的不一樣之處
cookie不會隨請求發送,也不會隨響應器返回; |
只能設置請求頭部信息中的Content-Type字段; |
不能訪問響應頭部信息 |
只支持get和post請求 |
本章看不下去了,週四前再來補上來
原文地址:http://www.cnblogs.com/lal-fighting/p/5164165.html