AJAX 是一種在無需重新加載整個網頁的情況下,能夠更新部分網頁的技術。今天我們就簡單的學習一下ajax的使用及過程。
ajax的使用
先貼出大致的代碼,是請求本地的一個servlet,返回json格式的數據。
function ajaxTest(argument) { var xmlhttp; if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp = new XMLHttpRequest(); } else { // code for IE6, IE5 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.open("GET", "http://localhost:9999/HttpJsonTest/AngularHttpServlet", true); xmlhttp.send(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { alert(xmlhttp.responseText); } } }
一、創建 XMLHttpRequest 對象
所有現代瀏覽器(IE7+、Firefox、Chrome、Safari 以及 Opera)均內建 XMLHttpRequest 對象。創建的語法為:
variable=new XMLHttpRequest();
老版本的 Internet Explorer (IE5 和 IE6)使用 ActiveX 對象:
variable=new ActiveXObject("Microsoft.XMLHTTP");
二、向服務器發送ajax請求
如需將請求發送到服務器,我們使用 XMLHttpRequest 對象的 open() 和 send() 方法:
xmlhttp.open("GET","test1.txt",true); xmlhttp.send();
open方法和send方法的使用如下:
open(method,url,async) | 規定請求的類型、URL 以及是否異步處理請求。
|
send(string) | 將請求發送到服務器。
|
與 POST 相比,GET 更簡單也更快,並且在大部分情況下都能用。然而,在以下情況中,請使用 POST 請求:
- 無法使用緩存文件(更新服務器上的文件或數據庫)
- 向服務器發送大量數據(POST 沒有數據量限制)
- 發送包含未知字符的用戶輸入時,POST 比 GET 更穩定也更可靠
如果需要像 HTML 表單那樣 POST 數據,請使用 setRequestHeader() 來添加 HTTP 頭。然后在 send() 方法中規定您希望發送的數據:
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
三、服務器響應
如需獲得來自服務器的響應,請使用 XMLHttpRequest 對象的 responseText 或 responseXML 屬性。
responseText | 獲得字符串形式的響應數據。 |
responseXML | 獲得 XML 形式的響應數據。 |
四、onreadystatechange 事件
當請求被發送到服務器時,我們需要執行一些基於響應的任務。每當 readyState 改變時,就會觸發 onreadystatechange 事件。readyState 屬性存有 XMLHttpRequest 的狀態信息。
下面是 XMLHttpRequest 對象的三個重要的屬性:
onreadystatechange | 存儲函數(或函數名),每當 readyState 屬性改變時,就會調用該函數。 |
readyState | 存有 XMLHttpRequest 的狀態。從 0 到 4 發生變化。
|
status | 200: "OK" 404: 未找到頁面 |
友情鏈接