AJAX不是一種新的編程語言,而是一種用於建立更好更快以及交互性更強的 Web 應用程序的技術。
使用Javascript向服務器提出請求並處理響應而不阻塞用戶!核心對象XMLHTTPRequest。經過這個對象,您的 JavaScript 可在不重載頁面的狀況與Web服務器交換數據。
在瀏覽器與 Web 服務器之間使用異步數據傳輸(HTTP 請求),這樣就可以使網頁從服務器請求少許的信息,而不是整個頁面。javascript
AJAX 可以使因特網應用程序更小、更快,更友好。
是一種獨立於 Web 服務器軟件的瀏覽器技術。AJAX 應用程序獨立於瀏覽器和平臺。
java
XMLHTTPRequest對象
最通用的定義爲:XmlHttp是一套能夠在Javascript、VbScript、Jscript等腳本語言中經過http協議傳送或從接收 XML及其餘數據的一套API。XmlHttp最大的用處是能夠更新網頁的部份內容而不須要刷新整個頁面。(這個功能正是AJAX的一大特色之一))ajax
建立一個XMLHTTPRequest 並初始化編程
var http_request = false; function makeRequest(url, content, handler)
{ http_request = false; if (window.XMLHttpRequest) {
//判斷是否把XMLHTTPRequest實現爲一個本地javascript對象
//其餘瀏覽器、做爲一個本地JavaScript對象而不是做爲一個ActiveX對象實現瀏覽器
http_request = new XMLHttpRequest(); if (http_request.overrideMimeType) { http_request.overrideMimeType('text/xml'); } } else if (window.ActiveXObject) {
// 判斷是否支持ActiveX控件
//微軟在其Internet Explorer(IE) 5中做爲一個ActiveX對象形式引入了XMLHttpRequest對象服務器
try {異步
http_request = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { http_request = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} } } if (!http_request) { alert('Giving up :( Cannot create an XMLHTTP instance'); return false; } http_request.onreadystatechange = handler; http_request.open('POST', url, true); http_request.send(content); }
方法:open (XMLHTTPRequest對象的)
建立一個新的http請求,並指定此請求的方法、URL以及驗證信息
語法:http_request.open(bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword);
參數
bstrMethod
http方法,例如:POST、GET、PUT及PROPFIND。大小寫不敏感。
bstrUrl
請求的URL地址,能夠爲絕對地址也能夠爲相對地址。
varAsync[可選]
布爾型,指定此請求是否爲異步方式,默認爲true。若是爲真,當狀態改變時會調用onreadystatechange屬性指定的回調函數。
bstrUser[可選]
若是服務器須要驗證,此處指定用戶名,若是未指定,當服務器須要驗證時,會彈出驗證窗口。
bstrPassword[可選]
驗證信息中的密碼部分,若是用戶名爲空,則此值將被忽略。
備註:調用此方法後,能夠調用send方法向服務器發送數據。
xmlhttp.Open("get", "http:localhost/example.htm", false); 編程語言
屬性:onreadystatechange
onreadystatechange:指定當readyState屬性改變時的事件處理句柄
語法:http_request.onreadystatechange = funcMyHandler;
當XMLHTTPRequest對象的readyState屬性改變時調用funcMyHandler函數,
當數據接收完畢後(readystate == 4)此頁面上的一個按鈕將被激活
備註:此屬性只寫,爲W3C文檔對象模型的擴展.
注意:onreadystatechange事件
不管readyState值什麼時候發生改變,XMLHttpRequest對象都會激發一個readystatechange事件。其 中,onreadystatechange屬性接收一個
EventListener值-向該方法指示不管readyState值什麼時候發生改變,該對象都將 激活。ide
方法:send
發送請求到http服務器並接收回應
語法:http_request.send(varBody);
參數:varBody (欲經過此請求發送的數據。) 函數
屬性:readyState
返回XMLHTTP請求的當前狀態
語法:lValue = http_request.readyState;
備註:變量,此屬性只讀,狀態用長度爲4的整型表示.定義以下:
0 (未初始化) 對象已創建,可是還沒有初始化(還沒有調用open方法)
1 (初始化) 對象已創建,還沒有調用send方法
2 (發送數據) send方法已調用,可是當前的狀態及http頭未知
3 (數據傳送中) 已接收部分數據,由於響應及http頭不全,這時經過responseBody和responseText獲取部分數據會出現錯誤,
4 (完成) 數據接收完畢,此時能夠經過經過responseBody和responseText獲取完整的迴應數據
屬性:responseText
將響應信息做爲字符串返回
語法:strValue = http_request.responseText;
備註:變量,此屬性只讀,將響應信息做爲字符串返回。XMLHTTP嘗試將響應信息解碼爲Unicode字符串,
屬性:status
返回當前請求的http狀態碼
語法:lValue = http_request.status;
返回值:長整形標準http狀態碼,定義以下:
Number:Description
100:Continue
101:Switching protocols
200:OK
201:Created
202:Accepted
203:Non-Authoritative Information
204:No Content
205:Reset Content
206:Partial Content
300:Multiple Choices
301:Moved Permanently
302:Found
303:See Other
304:Not Modified
305:Use Proxy
307:Temporary Redirect
400:Bad Request
401:Unauthorized
402:Payment Required
403:Forbidden
404:Not Found
405:Method Not Allowed
406:Not Acceptable
407:Proxy Authentication Required
408:Request Timeout
409:Conflict
410:Gone
411:Length Required
412:Precondition Failed
413:Request Entity Too Large
414:Request-URI Too Long
415:Unsupported Media Type
416:Requested Range Not Suitable
417:Expectation Failed
500:Internal Server Error
501:Not Implemented
502:Bad Gateway
503:Service Unavailable
504:Gateway Timeout
505:HTTP Version Not Supported
備註:長整形,此屬性只讀,返回當前請求的http狀態碼,此屬性僅當數據發送並接收完畢後纔可獲取。
(局部刷新也能夠直接使用JQ提供的API $.get方法,$.post方法,$.getJson方法,$.ajax 但要注意瀏覽器支持問題)