本篇文章主要的講述了關於ajax的自己一些總結,一些問題以及一些答案,希望能協助到大家。現在就讓我們一起來看這篇文章吧
首先ajax是Asynchronous JavaScript and XML的全稱,Asynchronous是非同步意思,這跟傳統的web不同。
什麼是同步什麼是非同步?
同步,是發送方發送資料之後,必須等接收方接收資料必須做出回應之後,才可以進行下一步。
非同步話則是發送方發送資料之後不需等接收方做出回應,可以進行下一步操作。
舉個形象的例子,同步就像A叫B去吃飯,A發出邀請,要B一起吃飯,此時必須等B做出回應,吃或者不吃,A才決定是一個人吃還是等B一起去;而非同步話就像是下班了,A跟B說A要去吃飯了,然後走了,不管B是否做任何回應。
Ajax原理
簡單來說,就是通過XMLHttpRequest對象像伺服器發送非同步請求,從伺服器擷取資料之後,再通過JS來操作DOM節點。
XMLHttpRequest對象
方法:
1.open(請求類型,url,布爾值)
2.send()參數為作為請求主體發送的資料,如果不需要請求主體發送資料,則傳入null
3.abort()取消非同步請求
4.getAllResponseHeaders()把HTTP請求的所有響應首部作為鍵/值對返回
5.getResponseHeader("header")返回指定首部的串值
6.setRequestHeader("header", "value")把指定首部設定為所提供的值。在設定任何首部之前必須先調用open()。設定header並和請求一起發送 ('post'方法一定要 )
ajax的常用屬性:
1.readyState 表示請求/響應過程的當前活動階段(0:未初始化,尚未調用open方法;1:啟動,已調用open方法,未調用send方法;2:發送:已調用send,未接到響應;3:接收,已經接收部分響應資料;4.完成,可以在用戶端使用)
2.onreadystatechange readyState的值改變一次就會調用一次這個方法(想看更多就到topic.alibabacloud.comAJAX開發手冊欄目中學習)
3.responseText 作為響應主體被返回的文本
4.responseXML 儲存響應類型為“text/xml”或"application/xml"的響應資料的XML DOM文檔
5.status 響應的HTTP狀態
6.statusText Http狀態的說明
下面建立一個XHR對象:
function createXHR(){if(typeof XMLHttpRequest != "undefined"){return new XMLHttprequest();}else if(typeof ActiveXObject != "undefined"){if(typeof arguments.callee.sctiveXString != "string"){var versions = ["MSXML2.XMLHttp.6.0","MSXML2.XMLHttp.3.0","MSXML2.XMLHttp"],i,len;for(i =0;i<versions.length;i<len;i++){try{new ActiveXObject(versions[i]);arguments.callee.activeXString = versions[i];break;}catch(ex){跳過}}}return new ActiveXObject(arguments.callee.activeXString);}else{throw new Error("No XHR object available");}}var xhr = createXHR();xhr.onreadyststechange = function(){if(xhr.readyState == 4){if((xhr.status >= 200 && xhr.status <300) || 304){alert(xhr.responseText);}else{alert("請求位成功"+ xhr.status);}}};xhr.open("get","aaa.txt",true);xhr.send(null);
ajax優點:
1.無重新整理更新資料,減少使用者等到時間,更好的使用者體驗
2.非同步與伺服器通訊,無需打斷使用者,響應更加迅速
3.可以把伺服器的一些負擔轉到用戶端,利用用戶端閑置的能力來處理,減輕伺服器和頻寬的負擔,節約空間和寬頻租用成本。並且減輕伺服器的負擔,AJAX的原則是“按需取資料”,可以最大程度的減少冗餘請求和響應對伺服器造成的負擔,提升網站效能。
5.基於標準化,廣泛被支援
ajax缺點
1.破壞了前進後退功能,使用者往往通過後退按鈕來取消上一步操作,但是使用ajax無法實現。可以使用Gmail來解決這個問題,它只是採用的一個比較笨但是有效辦法,即使用者單擊後退按鈕訪問記錄時,通過建立或使用一個隱藏的IFRAME來重現頁面上的變更。
2.安全問題。ajax技術就如同對企業資料建立了一個直接通道。這使得開發人員在不經意間會暴露比以前更多的資料和伺服器邏輯。ajax的邏輯可以對用戶端的安全掃描技術隱藏起來,允許駭客從遠端伺服器上建立新的攻擊。還有自身受到如跨站指令碼攻擊,SQL注入等攻擊。
3.對搜尋引擎支援較弱
4.一些手持功能不能很好的支援等
本篇文章到這就結束了(想看更多就到topic.alibabacloud.comAJAX使用手冊欄目中學習),有問題的可以在下方留言提問。