Ajax異步請求(一)

不困於情,不亂於心,不畏未來,不念過去。javascript

            ----致本身java

目錄:web

1、Ajax基礎知識回顧瀏覽器

1.Ajax簡介緩存

2.Ajax工做原理服務器

3.方法詳解併發

4.GET請求app

5.POST請求dom

**********************1、Ajax基礎知識回顧**************************異步

===================1.Ajax簡介===========================

Asynchrous JavaScript And XML 異步的JavaScript和XML,是驅動新一代web站點的關鍵技術。與xml的關係是能夠讀取和返回xml文件。

優勢:在不從新加載整個頁面的狀況下,能夠與服務器交換數據並更新部分網頁內容。

===================2.Ajax工做原理=========================

(1)客戶端瀏覽器建立一個XMLHttpRequest對象向服務器發送請求

(2)服務器接收請求,建立一個response對象併發送一些數據返回給瀏覽器

(3)瀏覽器接收數據使用JavaScript更新頁面內容

Ajax是基於現有的Internet標準,使用XMLHttpRequest對象異步的與服務器交換數據。

全部現代瀏覽器都支持XMLHttpRequest對象。xmlhttp = new XMLHttpRequest();

針對IE五、6:XMLHttpRequest xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

獲取XMLHttpRequest:

 

var xmlhttp;
if(window.XMLHttpRequest){
//  IE7+, Firefox, Chrome, Opera, Safari建立方式  
     xmlhttp = new    XMLHttpRequest();
}else{
//  IE6, IE5 建立方式  
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}    

 

===================3.方法詳解============================

如需將請求發送到服務器,則使用XMLHttpRequest對象的send()和open()方法。

xmlhttp.open(method,url,async);

xmlhttp.send();

method:請求類型,POST或者GET

url:文件在服務器的位置

async:true異步,false同步

send(string):將請求發送到服務器.string只使用於post請求,向服務器發送的請求數據。

注:若是是POST請求則須要設置請求頭,setRequestHeader();

屬性:

onreadystatechange() 存儲函數,每當readyState改變時就會觸發該函數

readyState 存有XMLHttpRequest狀態,從0-4

status   200:"OK"  404未找到頁面

responseText:獲取字符串形式的響應數據

responseXML:獲取xml格式的響應數據

===================4.GET請求===========================

GET請求簡單速度快且在絕大部分狀況下均可以使用

xmlhttp.open("GET","/user/demo.txt",true);

xmlhttp.send();

使用get請求時應該特別注意,像如上方式獲得的多是緩存的結果,爲了不這種狀況建議向URL中添加一個惟一的ID

xmlhttp.open("GET","/user/demo.text?t="+Math.random(),true);

===================5.POST請求==========================

 建議在如下狀況下使用POST請求

1.沒法用緩存文件

2.向服務器發送大量數據<post沒有數據限制>

3.發送包含未知字符串的用戶輸入時,post穩定可靠。

xmlhttp.open("POST","/user/demo.text",true);

須要向HTTP表單那樣post數據時可使用setRequestHeader("Content-type","application/x-www-form-urlencoded");

xmlhttp.send();

注:setRequestHeader(header,value);

header:規定頭的名稱

value:規定頭的值

當使用async = true時,請規定在響應時處於onreadystatechange事件中的就緒狀態的執行函數

xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
 //do something;   
}
}

 最後總結一下,使用Ajax異步請求時步驟:

1.建立對象(一般狀況下,爲了兼容全部瀏覽器會向上面獲取XMLHttpRequest代碼那樣寫)

2.設置open()方法和setRequestHeader()方法參數。將請求方法,請求地址,請求類型放到open中,若是是post請求則須要設置setRequestHeader()。

3.發送執行,send()方法纔是真正與服務器交互執行

4.獲取結果,使用它的函數onreadystatechange.

相關文章
相關標籤/搜索