AJAX: Ansyc Javascript And Xml (異步請求).html
異步是指基於Ajax的應用與服務器通訊的方法。對於傳統的Web應用,每次用戶發送請求或向服務器請求得到新數據時,瀏覽器都會徹底丟棄當前頁面,而等待從新加載的頁面。在服務器徹底響應以前,用戶瀏覽器將是一片空白,用戶的動做必須中斷。異步是指用戶發送請求後,徹底無須等待,請求在後臺發送,不會阻塞用戶的當前活動,用戶無須等待第一次請求獲得徹底響應,就能夠當即發送第二次請求。簡單的說,異步請求不會刷新當前html頁面。jquery
異步指的是服務器端響應數據的獲取方式。ajax
同步:spring
異步:chrome
1.同步請求:編程
請求的過程:瀏覽器(當前的html頁面會丟棄) ---> http協議 ---> Web服務器(tomcat)json
響應的過程:Web服務器(tomcat) ---> http協議 --> 返回一個新html頁面.瀏覽器
2.異步請求:tomcat
請求的過程:瀏覽器(當前的html頁面不會丟棄) ---> Ajax引擎(http協議) ---> Web服務器(tomcat)服務器
響應的過程:Web服務器(tomcat) ---> 準備部分數據 --> Ajax引擎(http協議) --> DOM編程.
XMLHttpRequest:內置函數 (msie8+、firefox、chrome、opera).
var xhr = new XMLHttpRequest();
// msie7-
ActiveXObject: 內置函數
var xhr = new ActiveXObject("瀏覽器的版本號");
// 第一個參數:請求方式(get|post)
// 第二個參數:請求URL
// 第三個參數:異步還同步。true: 異步請求中的異步;false: 異步請求中的同步. (主要是響應數據)
xhr.open("post|get", "請求的url", true|false);
xhr.send();
xhr.onreadystatechange = function(){
if (xhr.readyState == 4){ // 讀取服務器端的響應數據完成
if (xhr.status == 200){ // 表明服務器響應正常
// 獲取響應文本
xhr.responseText;
}
}
};
readyState的五種狀態:
0:XMLHttpRequest對象尚未完成初始化。
1:XMLHttpRequest對象開始發送請求。
2:XMLHttpRequest對象的請求發送完成。
3:XMLHttpRequest對象開始讀取服務器的響應。
4:XMLHttpRequest對象讀取服務器響應結束。
status的狀態碼:
200:服務器響應正常。
400:沒法找到請求的資源。
401:訪問資源的權限不夠。
403:沒有權限訪問資源。
404:須要訪問的資源不存在。
405:須要訪問的資源被禁止。
407:訪問的資源須要代理身份驗證。
414:請求的URL太長。
500:服務器內部錯誤。
jQuery核心異步請求方法:
格式:
$.ajax(url, [settings]);
-- 第一個參數:請求URL
-- 第二個參數:settings是一個json格式js對象(異步請求設置對象).
$.ajax({
url : "", // 請求URL
type : "get|post", // 發送請求的方式
data : "key=value&key=value|{key:value,key:value}|[{key:value,key:value},{key:value,key:value}]", // 請求參數
dataType : "text|html|xml|json|script|jsonp", // 服務器端響應回來的數據類型
async : true|false, // 異步仍是同步
success : function(data){ // 異步請求成功須要回調的函數
// data : 響應數據(jquery已經處理好的響應數據)
},
error : function(XMLHttpRequest, textStatus, errorThrown){ // 異步請求的失敗
// XMLHttpRequest : 異步請求的核心函數
// textStatus : 文本狀態
// errorThrown : 錯誤緣由
}
});
//發送get請求
$.get(url, data, function(data, status){
// status(狀態碼): success 、error
// data : 響應數據
}, dataType);
說明:
第1個參數:請求URL
第2個參數:請求參數
第3個參數:回調函數
第4個參數:服務器端響應回來的數據類型
//發送post請求
$.post(url, data, function(data, status){
// status(狀態碼): success 、error
// data : 響應數據
}, dataType);
說明:
第1個參數:請求URL
第2個參數:請求參數
第3個參數:回調函數
第4個參數:服務器端響應回來的數據類型