Ajax中get和post是XMLHttpRequest對象的open(method,url,asynch)中的屬性程序員
這個open方法是容許程序員用一個Ajax調用向服務器發送 請求。瀏覽器
method:請求類型,相似「GET」或「POSt」的字符串。若只想從服務器檢索一個文件,而不須要發送任何數據,使用GET(能夠在GET請求裏經過附加在URL上的查詢字符串來發送數據,不過數據大小限制爲2000個字符)。若須要向服務器發送數據,用POSET。緩存
在某些狀況下,有些瀏覽器會把多個XMLHttpRequest請求的結果緩存在同一個URL。若是對每一個請求的響應不一樣,這就會帶來很差的結果。把當前時間戳追加到URL的最後,就能確保URL的唯一性,從而避免瀏覽器緩存結果。
如:var url="GetAndPostExample?timeStamp="+newDate().getTime();服務器
url:路徑字符串,指向你所請求的服務器上的那個文件。能夠是絕對路徑或相對路徑。app
asynch:表示請求是否要異步傳輸,默認值爲true(異步)。指定true,在讀取後面的腳本以前,不須要等待服務器的相應。指定false,當腳本處理過程通過這點時,會停下來,一直等到Ajax請求執行完畢再繼續執行。
異步
send(data):async
open 方法定義了 Ajax 請求的一些細節。send 方法可爲已經待命的請求發送指令
data:將要傳遞給服務器的字符串。
若選用的是 GET 請求,則不會發送任何數據, 給 send 方法傳遞 null 便可:request.send(null);
當向send()方法提供參數時,要確保open()中指定的方法是POST,若是沒有數據做爲請求體的一部分發送,則使用null.
完整的Ajax的GET請求示例函數
//指定響應處理函數 xmlHttpReq.onreadystatechange=function(){ alert(xmlHttpReq.readyState+" "+xmlHttpReq.status); }; //創建對服務器的調用 xmlHttpReq.open("get","../registerServlet.do?username="+usernameValue,true); //發送指令 xmlHttpReq.send(null);
使用get請求時send方法參數時null,若是傳值的話,服務器也接受不到post
當瀏覽器向服務器請求頁面時,它會伴隨這個請求發送一組首部信息。這些首部信息是一系列描述請求的元數據(metadata)。首部信息用來聲明一個請求是 GET 仍是 POST。
Ajax 請求中,發送首部信息的工做能夠由 setRequestHeader完成
參數header: 首部的名字; 參數value:首部的值。
若是用 POST 請求向服務器發送數據,須要將 「Content-type」 的首部設置爲 「application/x-www-form-urlencoded」.它會告知服務器正在發送數據,而且數據已經符合URL編碼了。
該方法必須在open()以後才能調用
完整的 Ajax 的 POST 請求示例:編碼
//指定響應處理函數 xmlHttpReq.onreadystatuchange=function(){ alert(xmlHttpReq.readyState+""+xmlHttpReq.status); }; //創建對服務器的調用 xmlHttpReq.open("post","../reqisterServlet.do",true); xmlHttpReq.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); //發送指令 xmlHttpReq.send("username="+usernameValue+"&psw=000000")
接收--方法和屬性介紹
responseText
XMLHttpRequest 的 responseText 屬性包含了從服務器發送的數據。它是一個HTML,XML或普通文本,這取決於服務器發送的內容。當 readyState 屬性值變成 4 時, responseText 屬性纔可用,代表 Ajax 請求已經結束
//指定響應處理函數 xmlHttpReq.onreadystatechange=function(){ //對象狀態 4表示完成 if(xmlHttpReq.readyState==4){ //信息已成功返回200 沒有被修改304 if(xmlHttpReq.status==200||xmlHttpReq.status==304){ //開始處理信息 alert(xmlHttpReq.responseText); } } };
XMLHttpRequest初始化
function createXmlHttpRequest(){ var xmlHttp; try{ //Firefox, Opera 8.0+, Safari xmlHttp=new XMLHttpRequest(); }catch (e){ try{ //Internet Explorer xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); }catch (e){ try{ xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); }catch (e){} } } return xmlHttp; }