基本步驟:建立XMLHttpRequest對象-->配置發送參數-->執行發送-->處理響應php
1.建立Ajax對象
2.連接到服務器
3.發送請求
4.接受返回值web
對於前面要在if中加window判斷是由於,瀏覽器會對未定義值的變量讀取時報錯 ,而對於window.variable不會報錯,而是報undefined.ajax
首先理解同步與異步
同步:事情一件一件來
異步:多件事情一塊兒作
而ajax就是爲了異步而生的,例如用戶請求表單後,提交到服務器的過程,用戶不用等待,能夠幹別的事情。。。。。。瀏覽器
//發送請求
主要是判斷瀏覽器和服務器的交互進度和結果緩存
xhr.onreadystatechange=function(){ //oAjax.readyState瀏覽器和服務器的交互狀況 if(oAjax.readyState == 4)//讀取完成 { if(oAjax.status==200)//http狀態碼,用來判斷是否成功接受並返回文件 { alert(oAjax.status+" Success" +oAjax.responseText);//讀取響應文件裏面的TEXT }else{ alert(oAjax.status+" NotFound"); } } };
//將文件名設置隨系統時間改變而改變,這樣能夠避免瀏覽器緩存舊數據 oAjax.open('GET','./a.txt?t='+new Date().getTime(),true);
(1)responseText:得到字符串形式的響應數據服務器
(2)responseXML:得到xml形式的響應數據app
(3)status和statusText:以數字和文本形式返回Http轉態碼異步
(4)getAllResponseHeader():得到因此得響應報頭async
(5)getResponseHeader():查詢響應中的某個字段的值函數
(6)readState屬性
"0"請求未初始化,open還未調用
"1":服務器鏈接已經創建,open已調用
"2":請求已接收,也就是接收到頭信息了
"3":請求處理中,也就是接收到響應主體了
"4":請求已經完成,且響應就緒,響應完成了
2.配置發送函數 encodeURI做用對get參數進行編碼處理,防止亂碼 var param = encodeURI('?username='+uname+'&password='+pw); xhr.open('get','./data.php'+param); 3.發送 xhr.send(null);
2.配置發送函數 xhr.open('post','./33data.php'); //設置請求頭信息(對於post提交必須設置請求頭) xhr.setRequestHeader('Content-Type','application/x-www-form-urlencode'); 3.發送 var param = 'username='+uname+'&password='+pw; xhr.send(param);
get | post |
2.配置發送函數
encodeURI做用對get參數進行編碼處理,防止亂碼
var param = encodeURI('?username='+uname+'&password='+pw);
xhr.open('get','./data.php'+param);
3.發送
xhr.send(null);
|
2.配置發送函數
xhr.open('post','./33data.php');
設置請求頭信息(對於post提交必須設置請求頭)
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
3.發送
var param = 'username='+uname+'&password='+pw;
xhr.send(param);
|
一、Aja的get提交數據是經過url傳遞參數,而且須要對參數進行編碼處理
二、xhr.send();方法參數固定爲null
|
一、Ajax的post提交方式經過xhr.send();
函數傳遞的參數發送數據,而不是經過url傳遞數據
二、post提交方式必須設置請求頭( xhr.setRequestHeader('Content-Type','application/x-www-form-urlencode'); )
三、post提交的數據不須要進行編碼處理
|
HTTP請求過程
(1)創建TCP鏈接
(2)web瀏覽器向web服務器發送請求指令
(3)web瀏覽器發送請求頭信息
(4)web服務器應答
(5)web服務器發送應答頭信息
(6)web服務器向瀏覽器發送數據
(7)web服務器關閉TCP鏈接
a、HTTP請求方法或者動做(GET/POST)
b、正在請求的URL
c、請求頭,包含客戶環境信息、身份信息等
d、請求體(正文),包含客戶提交的查詢字符串信息、表單信息
GET:(1)用於信息獲取
(2)使用URL傳遞參數
(3)String<=2000個字符左右
POST:(1)用於修改服務器上的資源
(2)String<=無窮大
a、一個數字和文字組成的轉態碼。做用:顯示請求是否成功
b、響應頭,包含服務器類型、日期、內容類型、長度等
c、響應體,即響應正文,字符串、HTML等
1^^:信息類,表示收到web請求,正在進行處理中
2^^:成功,表示用戶請求被正確接收、理解和處理,如200
3^^:重定向,表示請求未成功,客戶必須採起動做
4^^:客戶端錯誤,客戶提交的信息有誤,如400
found:意味着請求中所引用的文檔不存在
5^^:服務器錯誤(最難處理的問題),表示服務器不能完成請求處理,如500