Ajax教程實(shí)例詳解
什么是 AJAX
AJAX = Asynchronous JavaScript and XML(異步的 JavaScript 和 XML)。
AJAX 不是新的編程語(yǔ)言,而是一種使用現(xiàn)有標(biāo)準(zhǔn)的新方法。
AJAX 是與服務(wù)器交換數(shù)據(jù)并更新部分網(wǎng)頁(yè)的藝術(shù),在不重新加載整個(gè)頁(yè)面的情況下(AJAX 是一種用于創(chuàng)建快速動(dòng)態(tài)網(wǎng)頁(yè)的技術(shù))。
通過在后臺(tái)與服務(wù)器進(jìn)行少量數(shù)據(jù)交換,AJAX 可以使網(wǎng)頁(yè)實(shí)現(xiàn)異步更新。這意味著可以在不重新加載整個(gè)網(wǎng)頁(yè)的情況下,對(duì)網(wǎng)頁(yè)的某部分進(jìn)行更新。
傳統(tǒng)的網(wǎng)頁(yè)(不使用 AJAX)如果需要更新內(nèi)容,必需重載整個(gè)網(wǎng)頁(yè)面。
XMLHttpRequest 對(duì)象
Ajax的核心是JavaScript對(duì)象XmlHttpRequest
<script type="text/javascript"> function createXHR(){ var xhr = null; try { // Firefox, Opera .+, Safari,IE+ xhr = new XMLHttpRequest(); } catch (e) { // Internet Explorer try { xhr = new ActiveXObject("Msxml.XMLHTTP"); } catch (e) { try { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { xhr = null; } } } return xhr; } </script>
XMLHttpRequest對(duì)象用法
XMLHttpRequest對(duì)象有兩個(gè)重要方法 open與send
在使用XMLHttpRequest對(duì)象時(shí)要調(diào)用的第一個(gè)方法是open方法,調(diào)用方式:XMLHttpRequest.open(“get”,”default.aspx”,true); 這段代碼會(huì)針對(duì)default.aspx頁(yè)面發(fā)送get請(qǐng)求,關(guān)于這段代碼有三點(diǎn)需要注意:
1. URL是相對(duì)于當(dāng)前頁(yè)面的路徑,也可以使用絕對(duì)路徑
2. 調(diào)用open方法并不會(huì)真正的發(fā)送請(qǐng)求,而是初始化一個(gè)請(qǐng)求準(zhǔn)備發(fā)送
3. 只能向同一個(gè)域中使用相同協(xié)議和端口的URL發(fā)送請(qǐng)求,否則會(huì)因?yàn)榘踩驁?bào)錯(cuò)
要想把請(qǐng)求發(fā)往服務(wù)器需要調(diào)用send方法,send方法接受一個(gè)參數(shù),參數(shù)是請(qǐng)求主體要發(fā)送的數(shù)據(jù),如果不需要發(fā)送數(shù)據(jù)則傳入null,在調(diào)用send方法之后請(qǐng)求被發(fā)往服務(wù)器,如下
xhr.send(null);
請(qǐng)求發(fā)往服務(wù)器,服務(wù)器根據(jù)請(qǐng)求生成響應(yīng)(Response),傳回給XHR對(duì)象,在收到響應(yīng)后相應(yīng)數(shù)據(jù)會(huì)填充到XHR對(duì)象的屬性,有四個(gè)相關(guān)屬性會(huì)被填充:
1. responseText:作為響應(yīng)主體被返回的文本
2. responseXML:如果響應(yīng)內(nèi)容的類型是”text/xml”或”application/xml”,這個(gè)屬性將保存包含著相應(yīng)數(shù)據(jù)的XML文檔
3. status:響應(yīng)的HTTP狀態(tài)(200,404,500等)
4. statusText:HTTP狀態(tài)說明
onreadystatechange 事件
當(dāng)請(qǐng)求被發(fā)送到服務(wù)器時(shí),我們需要執(zhí)行一些基于響應(yīng)的任務(wù)。
每當(dāng) readyState 改變時(shí),就會(huì)觸發(fā) onreadystatechange 事件。
readyState 屬性存有 XMLHttpRequest 的狀態(tài)信息。
下面是 XMLHttpRequest 對(duì)象的三個(gè)重要的屬性:
在 onreadystatechange 事件中,我們規(guī)定當(dāng)服務(wù)器響應(yīng)已做好被處理的準(zhǔn)備時(shí)所執(zhí)行的任務(wù)。
當(dāng) readyState 等于 4 且狀態(tài)為 200 時(shí),表示響應(yīng)已就緒:
xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState== && xmlhttp.status==) { document.getElementById("myDiv").innerHTML=xmlhttp.responseText; } }
我們可以在接受響應(yīng)之前調(diào)用abort方法取消異步請(qǐng)求:XMLHttpRequest .abort();
注意:
在使用XMLHttpRequest對(duì)象的send()方法時(shí),如果使用的是get請(qǐng)求或者不需要發(fā)送數(shù)據(jù)的post請(qǐng)求時(shí),需要使用send(null);
如果想要發(fā)送數(shù)據(jù)數(shù)據(jù),則需要使用post請(qǐng)求,先使用 setRequestHeader() 來添加 HTTP 頭。然后在 send() 方法中規(guī)定您希望發(fā)送的數(shù)據(jù):
xmlhttp.open("POST","ajax_test.asp",true); xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); xmlhttp.send("fname=Bill&lname=Gates");
以上內(nèi)容是小編給大家介紹的Ajax教程實(shí)例詳解,希望對(duì)大家有所幫助!
相關(guān)文章
簡(jiǎn)述Ajax的優(yōu)點(diǎn)與缺點(diǎn)
這篇文章主要介紹了Ajax的優(yōu)點(diǎn)與缺點(diǎn)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-11-11利用ajax實(shí)現(xiàn)簡(jiǎn)單的注冊(cè)驗(yàn)證局部刷新實(shí)例
ajax的工作原理想必大家都有所了解吧,不懂的可以看看本文。下面是注冊(cè)驗(yàn)證案例register。php是注冊(cè)頁(yè)面。registerProcess.php用于接收數(shù)據(jù)并返回?cái)?shù)據(jù)2013-10-10javascript 拖動(dòng)_cookie_ajax等
比較實(shí)用的js拖動(dòng)效果代碼。類的寫法不錯(cuò),是個(gè)不錯(cuò)的應(yīng)用2008-06-06ajax下載smartupload的內(nèi)容無法顯示漢字的解決方法
用ajax下載smartupload的內(nèi)容無法顯示漢字情況,大有人遇到,下面給出服務(wù)器端以及客戶端上的解決方案,感興趣的朋友不要錯(cuò)過2013-11-11Ajax獲取到數(shù)據(jù)放入echarts里不顯示的原因分析及解決辦法
在做一個(gè)需要用到echarts地圖的項(xiàng)目的時(shí)候,成功通過ajax獲取到了后臺(tái)提供的數(shù)據(jù),并生成了想要的JSON串。但是,放到echarts option.series[0].data里,獲取不到數(shù)據(jù)。在生成的地圖上無法看到你從后臺(tái)獲取到的值,下面小編給大家分享我的解決辦法,需要的朋友參考下2016-01-01IE6中ajax aborted錯(cuò)誤請(qǐng)求中斷解決方法
給a標(biāo)簽綁定了一個(gè)click事件用來觸發(fā)ajax請(qǐng)求,在IE6中,請(qǐng)求時(shí)常會(huì)被中斷,在其他瀏覽器中都一切正常,具體解決方法如下,感興趣的朋友可以參考下2013-06-06ajax讀取數(shù)據(jù)庫(kù)內(nèi)容實(shí)現(xiàn)二級(jí)聯(lián)動(dòng)下拉選擇菜單示例
本文為大家介紹下使用ajax技術(shù)讀取數(shù)據(jù)庫(kù)內(nèi)容并生成二級(jí)聯(lián)動(dòng)下拉選擇菜單,具體實(shí)現(xiàn)如下,感興趣的朋友可以參考下,希望對(duì)大家有所幫助2013-07-07