都知道實現(xiàn)頁面的異步操作需要使用Ajax,那么Ajax到是怎么實現(xiàn)異步操作的呢?

首先需要認(rèn)識一個對象 --> XMLHttpRequest 對象 --> Ajax的核心。它有許多的屬性和方法事件以便于腳本處理和控制HTTP的請求和響應(yīng)。

下面來認(rèn)識幾個屬性:我不用官方的話來解釋,希望大家能一看就知道是什么意思

  readyState 屬性

    創(chuàng)建XMLHttpRequest對象(下面稱ajax對象)后,readyState屬性則表示當(dāng)前對象處于一個什么狀態(tài) ,一共5個狀態(tài)

    0   未初始化狀態(tài) ,ajax對象已經(jīng)創(chuàng)建

    1   準(zhǔn)備發(fā)送狀態(tài),調(diào)用了open()方法,并且已經(jīng)準(zhǔn)備好將一個請求發(fā)送到服務(wù)器

    2   已發(fā)送狀態(tài),   已經(jīng)通過send()方法把一個請求發(fā)送到服務(wù)器,但是沒有收到一個響應(yīng)

    3   正在接受狀態(tài),已經(jīng)接收到HTTP的響應(yīng)頭部信息,但是消息體還沒有還沒有完全接收

    4   完成響應(yīng)狀態(tài),已經(jīng)完成HttpResponse的響應(yīng)接收

   status 屬性:

    描述了HTTP狀態(tài)代碼,當(dāng)readyState值小于3時 不可讀取,會引發(fā)異常錯誤

下面是Ajax的封裝代碼,我們來逐步分析,以便于理解

Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),移動開發(fā)培訓(xùn),云培訓(xùn)培訓(xùn) View Code

 

1 .一個json2Url格式的方法

調(diào)用ajax()時里面是以json的形式傳數(shù)據(jù),但是我們的url是這樣的

https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=&json=1&p=3&sid=1464_21105_18560_17001_;

所以我們需要把格式轉(zhuǎn)換這樣才能提交,由于ie存在緩存所以需要加一個隨機(jī)數(shù),encodeURICompon