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