十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
這篇文章主要介紹通過(guò)AJAX進(jìn)行異步請(qǐng)求的方法,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
AJAX定義
AJAX是Asynchronous JavaScript + XML的簡(jiǎn)寫,使我們可以通過(guò) JavaScript 直接獲取服務(wù)端最新的內(nèi)容而不必重新加載
頁(yè)面。讓 Web 更能貼近用戶體驗(yàn)。其實(shí)AJAX 就是瀏覽器提供的一套 API ,可以通過(guò) JavaScript 調(diào)用,從而實(shí)現(xiàn)通過(guò)代碼控制請(qǐng)求與響應(yīng)。
HTTP是一種請(qǐng)求 - 響應(yīng)協(xié)議,這意味著瀏覽器向Web服務(wù)器發(fā)出請(qǐng)求,然后Web服務(wù)器創(chuàng)建它發(fā)送回瀏覽器的響應(yīng),并且瀏覽器以可視方式將該文本呈現(xiàn)給用戶。但是,如果您只需要更新頁(yè)面的一小部分,就需要用到AJAX了然后使用瀏覽器的DOM模型將響應(yīng)動(dòng)態(tài)插入頁(yè)面中。
AJAX異步請(qǐng)求的四個(gè)步驟
(1)為瀏覽器創(chuàng)建一個(gè) XMLHttpRequest對(duì)象
var xhr = new XMLHttpRequest();
(2)創(chuàng)建將請(qǐng)求發(fā)送到服務(wù)器的功能:
xhr.open('GET', './demo.php');
(3)通過(guò)連接發(fā)生一次請(qǐng)求
xhr.send(string);
(4)指定 xhr 狀態(tài)變化事件處理函數(shù)
xhr.onreadystatechange = function () { // 通過(guò) xhr 的 readyState 判斷此次請(qǐng)求的響應(yīng)是否接收完成 if (this.readyState === 4) { // 通過(guò) xhr 的 responseText 獲取到響應(yīng)的響應(yīng)體 console.log(this)
readyState的四個(gè)狀態(tài)
0 :代表xhr被創(chuàng)建但還沒有調(diào)用open方法。
1 :open()方法已經(jīng)被調(diào)用建立了連接。
2:調(diào)用了send()方法,并且已經(jīng)可以獲取狀態(tài)行和響應(yīng)頭。
3: 響應(yīng)體加載中, responseText 屬性可能已經(jīng)包含部分?jǐn)?shù)據(jù)。
4: 響應(yīng)體加載完成,可以直接使用 responseText 。
例:
var xhr = new XMLHttpRequest()//0狀態(tài) xhr.open('GET', 'time.php')//1狀態(tài),open方法已經(jīng)調(diào)用了,建立一個(gè)與服務(wù)端特定端口的連接 xhr.send() xhr.addEventListener('readystatechange', function () { })//里面包含了2,3,4三種狀態(tài),2分別為接受到了響應(yīng)頭但還沒有接受到響應(yīng)體; 正在下載響應(yīng)報(bào)文; 報(bào)文下載下來(lái)處理響應(yīng)體 xhr.onreadystatechange = function () { if (this.readyState === 4) { }//處理函數(shù)
以上是通過(guò)AJAX進(jìn)行異步請(qǐng)求的方法的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)網(wǎng)站制作公司行業(yè)資訊頻道!