21.1 XMLHttpRequest 對象
21.1.1 xhr的用法
在使用xhr對象時丐怯,要調(diào)用的第一個方法是 open(), 它接受三個參數(shù):要發(fā)送的請求的類型(get或post等)趾唱,請求的url尤勋,是否異步發(fā)送請求仅讽。
例如:
xhr.open('get', 'example.php', false);
上面代碼有兩點需要說明下:
1、url是相對于執(zhí)行代碼的當(dāng)前頁面
2媳板、調(diào)用open()方法并不會真正發(fā)送請求咳焚,而只是啟動一個請求以備發(fā)送。
要發(fā)送特定請求吴攒,必須調(diào)用send()方法
xhr.open('get', 'example.php', false);
xhr.send(null);
send()接受一個參數(shù)张抄,即要做為請求主體發(fā)送的數(shù)據(jù),如果不需要發(fā)送數(shù)據(jù)洼怔,則必須傳入null署惯,因為這個參數(shù)對有些瀏覽器是必須的。
調(diào)用send之后镣隶,請求會被分派到服務(wù)器极谊。
服務(wù)器響應(yīng)之后诡右,會返回內(nèi)容,返回中會有一個status響應(yīng)的HTTP狀態(tài)轻猖,狀態(tài)碼:
200:成功
304:請求的資源未被修改帆吻,可直接使用瀏覽器中緩存。
另外咙边,在受到服務(wù)器響應(yīng)之前猜煮,還可以調(diào)用 abort() 方法來取消異步請求。
xhr.abort();
21.1.2 HTTP頭部信息
默認(rèn)情況下败许,在發(fā)送XHR請求的同時王带,還會發(fā)送下列頭部信息:
Accept:瀏覽器能夠處理的內(nèi)容類型
Accept-Charset:瀏覽器能夠顯示的字符集
Accept-Encoding:瀏覽器能夠處理的壓縮編碼
Accept-Language:瀏覽器當(dāng)前設(shè)置的語言
Connention:瀏覽器與服務(wù)器之間連接的類型
Cookie:當(dāng)前頁面設(shè)置的任何cookie
Host:發(fā)出請求的頁面所在域
Referer:發(fā)出請求的頁面的url。注意檐束,這個字段被HTTP規(guī)范寫錯了辫秧,正確為:referrer;
User-Agent:瀏覽器的用戶代理字符串
使用 setRequestHeader()可以設(shè)置自定義的請求頭部信息
使用 getRequestHeader('MyHeader'):可以取得傳入的響應(yīng)頭部信息束倍。
21.1.3 GET 請求
GET最常用于向服務(wù)器查詢某些信息被丧。必要時,可以將查詢字符串參數(shù)追加到URL的末尾绪妹,以便將信息發(fā)送給服務(wù)器甥桂。
21.1.4 POST請求
通常用于向服務(wù)器發(fā)送應(yīng)該被保存的數(shù)據(jù)。
21.4 跨源資源共享
Ajax跨域技術(shù):
(1):圖像 Ping
這種技術(shù)主要是用<img>標(biāo)簽的方法邮旷,因為一個網(wǎng)頁可以從任何地方加載圖片黄选,而不用擔(dān)心跨域。
可以通過load,error事件來響應(yīng)服務(wù)器
var img = new Image();
img.onload = img.onerror = function(){
alert('done')
}
img.src = 'http://xxxxx'
更多有關(guān)Ajax跨域解決方案婶肩,請看
http://www.reibang.com/p/a49c08bfa13f