Ajax的使用
(1)創建 XMLHttpRequest 對象,也就是創建一個異步調用對象;
(2)創建一個新的 HTTP 請求,並指定該 HTTP 請求的方法、 URL 以及驗證信息;
(3)設置響應 HTTP 請求狀態變化的函數;
(4)發送 HTTP 請求;
(5)獲取異步調用返回的數據;
(6)使用 JavaScript 和 DOM 實現局部刷新。
例如:
var xmlHttp = new XMLHttpRequest(); xmlHttp.open('GET', 'demo.php', true); xmlHttp.send(); xmlHttp.onreadystatechange = function(){ if(xmlHttp.readyState===4 && xmlHttp.status===200){ } } |
——創建 Ajax 核心對象XMLHttpRequest
var xmlhttp; if(window.XMLHttpRequest){ // IE7+,Chrome,Firefox,Safari,Opera執行此代碼 xmlhttp = new XMLHttpRequest(); }else{ // IE5、IE6執行該代碼 xmlhttp = new ActiveXObject('Microsoft.XMLHTTP'); } |
——向服務器發送請求
xmlhttp.open(method, url, async); xmlhttp.send(); |
參數說明:method:請求類型,GET 或 POST;
url:文件在服務器上的位置,相對位置或絕對位置;
async:true(異步)或false(同步);
post請求不同於get請求,send(string)方法在 POST 請求時才使用字符串參數,否則不用帶參數
post請求一定要設置請求頭的格式內容
xmlhttp.open('POST', 'ajax_test.html', true); xmlhttp.setRequestHeader('content-type', 'application/x-www-form-urlencoded'); xmlhttp.send('fname=Herry&lname=Ford'); |
——服務器響應處理
responseText:獲取字符串形式的響應數據
①同步處理
xmlhttp.open('GET', 'http://www.runoob.com/try/ajax/demo_get.php', false); xmlhttp.send(); document.getElementById('mydiv').innerHTML = xmlhttp.responseText; |
②異步處理
xmlhttp.onreadystatechange = function(){ if(xmlhttp.readyState===4 && xmlhttp.status===200){ document.getElementById('mydiv').innerHTML = xmlhttp.responseText; } } |
xmlhttp.readyState一共有5種請求狀態,從0到4發送變化:
0:請求未初始化;
1:服務器連接已建立;
2:請求已接收;
3:請求處理中;
4:請求已完成,且響應已就緒
xmlhttp.status響應狀態碼,比較常用的有:
200:請求成功;
304:該資源在上次請求之後沒有任何修改(這通常是瀏覽器的緩存機制,使用GET請求時尤其需要注意);
403:(禁止)服務器拒絕請求;
404:(未找到)服務器找不到請求的網頁;
408:(請求超時)服務器等候請求時發生超時;
500:(服務器內部錯誤)服務器遇到錯誤,無法完成請求。