ajax教程
本文來自w3school
簡介:
AJAX = Asynchronous JavaScript and XML
異步的javascript和xml
ajax不是新的編程語言,而是一種使用現有標準的新方法。
ajax是與服務器交換數據并更新部分網頁的藝術,在不重新加載整個頁面的情況下。
Google Suggest
在 2005 年,Google 通過其 Google Suggest 使 AJAX 變得流行起來。
Google Suggest 使用 AJAX 創造出動態性極強的 web 界面:當您在谷歌的搜索框輸入關鍵字時,JavaScript 會把這些字符發送到服務器,然后服務器會返回一個搜索建議的列表。
XMLHttpRequest 是 AJAX 的基礎。
所有現代瀏覽器均支持 XMLHttpRequest 對象(IE5 和 IE6 使用 ActiveXObject)。
創建xmlhttprequest對象
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","test1.txt",true);//請求類型,url,是否異步處理請求
xmlhttp.send(string);//string 僅用于post請求
GET 還是 POST?
與 POST 相比,GET 更簡單也更快,并且在大部分情況下都能用。
然而,在以下情況中,請使用 POST 請求:
- 無法使用緩存文件(更新服務器上的文件或數據庫)
- 向服務器發送大量數據(POST 沒有數據量限制)
- 發送包含未知字符的用戶輸入時,POST 比 GET 更穩定也更可靠
- 如果需要像 HTML 表單那樣 POST 數據,請使用 setRequestHeader() 來添加 HTTP 頭。然后在 send() 方法中規定您希望發送的數據:
-
xmlhttp.open("POST","ajax_test.asp",true); xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); xmlhttp.send("fname=Bill&lname=Gates");
服務器響應
如需獲得來自服務器的響應,請使用 XMLHttpRequest 對象的 responseText 或 responseXML 屬性。
onreadystatechange 事件
當請求被發送到服務器時,我們需要執行一些基于響應的任務。
每當 readyState 改變時,就會觸發 onreadystatechange 事件。
readyState 屬性存有 XMLHttpRequest 的狀態信息。
下面是 XMLHttpRequest 對象的三個重要的屬性:
| 屬性 | 描述 |
|---|---|
| onreadystatechange | 存儲函數(或函數名),每當 readyState 屬性改變時,就會調用該函數。 |
| readyState |
存有 XMLHttpRequest 的狀態。從 0 到 4 發生變化。
|
| status |
200: "OK" 404: 未找到頁面 |
在 onreadystatechange 事件中,我們規定當服務器響應已做好被處理的準備時所執行的任務。
當 readyState 等于 4 且狀態為 200 時,表示響應已就緒:
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
}
浙公網安備 33010602011771號