輕松理解JavaScript之AJAX
摘要
AJAX技術是網(wǎng)頁構建的必備技能之一,本文希望能幫助大家輕松的學習這項技術
一、什么是ajax?
ajax(異步javascript xml) 能夠刷新局部網(wǎng)頁數(shù)據(jù)而不是重新加載整個網(wǎng)頁。
二、如何使用ajax?
第一步:創(chuàng)建xmlhttprequest對象
創(chuàng)建xmlhttprequest對象,XMLHttpRequest對象用來和服務器交換數(shù)據(jù)。
var xmlhttp =new XMLHttpRequest();
第二步:注冊回調函數(shù)
onreadystatechange函數(shù),當服務器響應請求并返回數(shù)據(jù)后,我們想要客戶端處理這些數(shù)據(jù)就需要使用onreadystatechange函數(shù),每次xmlhttprequest對象的readyState發(fā)生改變都會觸發(fā)onreadystatechange函數(shù)。對于readyState會在下一章節(jié)詳細介紹。
xmlHttp.onreadystatechange= callback; function callback(){}
第三步:配置和發(fā)送請求
使用xmlhttprequest對象的open()和send()方法配置和發(fā)送資源請求給服務器。
xmlhttp.open(method,url,async) method包括get 和post,url主要是文件或資源的路徑,async參數(shù)為true(代表異步)或者false(代表同步)
xmlhttp.send();使用get方法發(fā)送請求到服務器。
xmlhttp.send(string);使用post方法發(fā)送請求到服務器。
post表單數(shù)據(jù)需要使用xmlhttprequest對象的setRequestHeader方法增加一個HTTP頭。
post 發(fā)送請求什么時候能夠使用呢?
(1)更新一個文件或者數(shù)據(jù)庫的時候。
(2)發(fā)送大量數(shù)據(jù)到服務器,因為post請求沒有字符限制。
(3)發(fā)送用戶輸入的加密數(shù)據(jù)。
xhttp.open("POST", "ajax_test.aspx", true); xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xhttp.send("fname=Henry&lname=Ford");
第四步:處理響應數(shù)據(jù)
使用xmlhttprequest對象的responseText或responseXML屬性獲得服務器的響應。
使用responseText屬性得到服務器響應的字符串數(shù)據(jù),使用responseXML屬性得到服務器響應的XML數(shù)據(jù)。
在回調函數(shù)中使用readyState==4和status==200判斷交互是否結束,響應是否正確,并根據(jù)需要獲取服務器端返回的數(shù)據(jù),更新頁面內容。
function callback(){ if(xmlHttp.readyState == 4){ //判斷交互是否成功 if(xmlHttp.status == 200){ //獲取服務器返回的數(shù)據(jù) //獲取純文本數(shù)據(jù) var responseText =xmlHttp.responseText; document.getElementById("info").innerHTML = responseText; } } }
三、AJAX運行過程中5種狀態(tài)(readyState)
在AJAX實際運行當中,對于訪問XMLHttpRequest(XHR)時并不是一次完成的,而是分別經歷了多種狀態(tài)后取得的結果,對于這種狀態(tài)在AJAX中共有5種,這五種狀態(tài)是由AJAX引擎切換設置的,分別是。
0 : 定義了XHR,但還未初始化
1 :調用send()方法,正在發(fā)送請求,請求發(fā)送完畢后,開始等待接收響應
2 :響應接收完成
3 :正在解析響應內容
4 :響應內容解析完成,返回給客戶端調用
對于上面的狀態(tài),其中“0”狀態(tài)是在定義后自動具有的狀態(tài)值,而對于成功訪問的狀態(tài)(得到信息)我們大多數(shù)采用“4”進行判斷。
值得注意的是,狀態(tài)每切換一次,都會觸發(fā)onreadystatechange 事件,所以整個過程onreadystatechange 事件被觸發(fā)5次
四、AJAX的優(yōu)缺點
優(yōu)點
1、最大的一點是頁面無刷新,在頁面內與服務器通信,不需要打斷用戶的操作,具有更加迅速的響應能力給用戶的體驗非常好。
2、減輕服務器的負擔,ajax的原則是“按需取數(shù)據(jù)”,可以最大程度的減少冗余請求,和響應對服務器造成的負擔。
缺點
1、ajax干掉了back按鈕,即對瀏覽器后退機制的破壞。
2、對搜索引擎的支持比較弱。
以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!
- jquery拼接ajax 的json和字符串拼接的方法
- 純JS實現(xiàn)AJAX局部刷新功能
- ajax響應json字符串和json數(shù)組的實例(詳解)
- JavaScript中從setTimeout與setInterval到AJAX異步
- 解決ajax不能訪問本地文件問題(利用js跨域原理)
- 原生JavaScript實現(xiàn)AJAX、JSONP
- 用ajax傳遞json到前臺中文出現(xiàn)問號亂碼問題的解決辦法
- 詳解使用Vue.Js結合Jquery Ajax加載數(shù)據(jù)的兩種方式
- jQuery基于ajax操作json數(shù)據(jù)簡單示例
- AngularJS實現(xiàn)ajax請求的方法
相關文章
Java遍歷集合方法分析(實現(xiàn)原理、算法性能、適用場合)
這篇文章主要介紹了Java遍歷集合方法分析(實現(xiàn)原理、算法性能、適用場合)的相關資料,需要的朋友可以參考下2016-04-04