標籤:active 分享 沒有 ima amp javascrip btn 基於 opera
AJAX:Asynchronous ([?‘s??kr?n?s; e?-])Javascript ([‘d?ɑ:v?,skr?pt])and XML 非同步Javascript和XML
AJAX不是新的程式設計語言,而是一種使用現有標準的新方法
百度百科解釋:
AJAX是指一種建立互動式網頁應用的網頁開發技術,中文名:阿賈克斯
AJAX = 非同步 Javascript和XML(標準通用標記語言 (SGML)的子集)。AJAX 是一種用於建立快速動態網頁的技術。通過在後台與伺服器進行少量資料交換,AJAX 可以使網頁實現非同步更新。這意味著可以在不重新載入整個網頁的情況下,對網頁的某部分進行更新。傳統的網頁(不使用 AJAX)如果需要更新內容,必須重載整個網頁頁面。 AJAX的基礎:XMLHttpRequest1.建立XMLHttpRequest對象:
variable=new XMLHttpRequest();
但是老版本的IE5、IE6使用ActiveX對象:
variable=new ActiveXObject("Microsoft.XMLHTTP");
因此為了適應所有的瀏覽器,包括 IE5 和 IE6,請檢查瀏覽器是否支援 XMLHttpRequest 對象。如果支援,則建立 XMLHttpRequest 對象。如果不支援,則建立 ActiveXObject :
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"); }
2.XMLHttpRequest對象用於和伺服器交換資料
如果需要將請求發送到伺服器,我們使用XMLHttpRequest對象的open()和send()方法:
open(method,url,async)
規定請求的類型,URL 以及是否非同步處理請求。
- method:請求的類型;GET 或 POST
- url:檔案在伺服器上的位置
- async:true(非同步)或 false(同步)
send(string)
將請求發送到伺服器。
GET 還是 POST?
與 POST 相比,GET 更簡單也更快,並且在大部分情況下都能用。
然而,在以下情況中,請使用 POST 請求:
- 無法使用快取檔案(補救伺服器上的檔案或資料庫)
- 向伺服器發送大量資料(POST 沒有資料量限制)
- 發送包含未知字元的使用者輸入時,POST 比 GET 更穩定也更可靠
下面是ajax請求本地.txt檔案的全部代碼:
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>ajax請求本地.txt檔案</title> <script> window.onload = function () { var btn = document.getElementById(‘btn‘); btn.onclick = function () { //建立XHR對象 var xhr = new XMLHttpRequest(); //請求的方式,地址,是否非同步 test.txt和該html檔案在同一級目錄 xhr.open(‘get‘, ‘test.txt‘, true); //請求的確定操作,初始化,相當於搜尋時,敲擊的斷行符號 xhr.send(null); //請求的readyState每變化一次就執行一次onreadystatechange函數 //其中readyState表示的是:請求/響應過程的當前活動階段 //readyState有如下取值 /* * 0:未初始化,尚未調用send()方法 * 1: 啟動 * 2:發送 * 3:接收 * 4:完成 */ xhr.onreadystatechange = function () { if (xhr.readyState == 4 && xhr.status==200) { alert(xhr.responseText); } } }; }; </script></head><body><input type="button" id="btn" value="click"></body></html>
效果:
3.AJAX——伺服器響應
如需獲得來自伺服器的響應,請使用 XMLHttpRequest 對象的 responseText 或 responseXML 屬性
responseText:獲得字串形式的響應資料。
responseXML:獲得 XML 形式的響應資料。
如果來自伺服器的響應並非 XML,請使用 responseText 屬性。responseText 屬性返回字串形式的響應,因此可以這樣使用:
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
4.AJAX - onreadystatechange 事件
當請求被發送到伺服器時,我們需要執行一些基於響應的任務。每當 readyState 改變時,就會觸發 onreadystatechange 事件。readyState 屬性存有 XMLHttpRequest 的狀態資訊:
onreadystatechange:儲存函數(或函數名),每當 readyState 屬性改變時,就會調用該函數。
readyState:
存有 XMLHttpRequest 的狀態。從 0 到 4 發生變化。
- 0: 請求未初始化
- 1: 伺服器串連已建立
- 2: 請求已接收
- 3: 請求處理中
- 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; } }
上面就是最基礎的AJAX使用方法。
AJAX(一、基本知識)