成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Ajax學(xué)習(xí)筆記

wing324 / 1671人閱讀

摘要:最近在學(xué),剛剛?cè)腴T,用到很多與相關(guān)的交互。也用了挺久的了,想寫一下學(xué)習(xí)筆記來記錄一下。實現(xiàn)過程是的基礎(chǔ),是核心對象,首先要實例化一個對象進行請求,規(guī)定請求的類型以及是否異步處理請求。響應(yīng)服務(wù)器狀態(tài)響應(yīng)服務(wù)器狀態(tài)涉及對象的三個重要的屬性。

最近在學(xué)php,剛剛?cè)腴T,用到很多與Ajax相關(guān)的交互。Ajax也用了挺久的了,想寫一下學(xué)習(xí)筆記來記錄一下。今天先簡單寫一下原理和過程。歡迎大家一起探討。
什么是AJAX

AJAX的全稱是Asynchronous JavaScript and XML。
它是一種基于JavaScript的網(wǎng)頁應(yīng)用技術(shù)。傳統(tǒng)的提交方式會重載整個網(wǎng)頁,而利用AJAX技術(shù)可以使JavaScript與Web服務(wù)器異步傳輸數(shù)據(jù),從而實現(xiàn)不重載整個頁面的情況下,更新局部頁面局部內(nèi)容。

Ajax實現(xiàn)過程 0. XMLHttpRequest是AJAX的基礎(chǔ),XMLHTTPRequest()是核心對象,首先要實例化一個XMLHTTPRequest()對象
var xhr = new XMLHTTPRequest();
1. AJAX進行請求,規(guī)定請求的類型、URL 以及是否異步處理請求。
xhr.open(method, url, async);

open()方法接收三個參數(shù):

method:請求的類型;GET 或 POST

url:文件在服務(wù)器上的位置

async:true(異步)或 false(同步)

AJAX的原理就是Asynchronous異步的,所以第三個參數(shù)async為true。

第一個參數(shù)method決定了請求類型,即傳輸數(shù)據(jù)的方式。

GET

與POST相比,GET 更簡單也更快。但是傳輸數(shù)據(jù)時會將數(shù)據(jù)放在地址欄的后面,對客戶端而言不安全。除此之外,GET傳輸數(shù)據(jù)的大小受限,一般只有2k-8k,因瀏覽器而異。所以在傳輸不敏感信息并且傳輸文件小的情況下,我們可以選擇用GET方式傳輸。

POST

POST傳輸是傳輸數(shù)據(jù)體,是隱式的,相對客戶端較為安全。但是從另一層面上來說,相對服務(wù)器端就有一定的風(fēng)險了。POST傳輸數(shù)據(jù)沒有大小限制,但是服務(wù)器對上傳的數(shù)據(jù)有限制,需要手動修改。

2. AJAX向服務(wù)器發(fā)送請求
xhr.send(string);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

用GET方法傳輸時,send(null),用POST方法傳輸時,需要用setRequestHeader方法設(shè)置請求頭。

3. AJAX響應(yīng)服務(wù)器狀態(tài)

AJAX響應(yīng)服務(wù)器狀態(tài)涉及XMLHttpRequest對象的三個重要的屬性:onreadystatechange、readyState、status。
readyState存有XMLHttpRequest的狀態(tài)。從0到4發(fā)生變化:

0: 請求未初始化

1: 服務(wù)器連接已建立

2: 請求已接收

3: 請求處理中

4: 請求已完成,且響應(yīng)已就緒

每當(dāng)readyState改變時,就會觸發(fā)onreadystatechange事件,在事件中判斷請求是否成功,響應(yīng)是否就緒,當(dāng)readyState等于4且狀態(tài)為200時,表示響應(yīng)已就緒:

xhr.onreadystatechange = function () {
    if (xhr.readyState === 4) {
        if (xhr.status === 200) {
            obj.success(xhr.responseText);
        }
    }
}
4. 使用 Callback 函數(shù)
obj.success(xhr.responseText);

AJAX響應(yīng)就緒后,對接收到的數(shù)據(jù)進行后續(xù)的操作。

Ajax原生封裝
var ajax = {
    create: function () {
        var xhr;
        if (XMLHttpRequest) {
            xhr = new XMLHttpRequest();
        } else{
            xhr = new ActiveXObject("Microsoft.XMLHTTP");
        }
        return xhr;
    },
    request: function (obj) {
        var xhr = this.create();
        var data = this.changeData(obj.data);
        if (obj.type === "GET") {
            xhr.open(obj.type, obj.url+"?rand="+Math.random()+"&"+data, true);
            xhr.send(null);
        } else if (obj.type === "POST") {
            xhr.open(obj.type, obj.url, true);
            xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
            xhr.send(data);
        }
        xhr.onreadystatechange = function () {
            if (xhr.readyState === 4) {
                if (xhr.status === 200) {
                    obj.success(xhr.responseText);
                }
            }
        }
    },
    changeData: function (data) {
        var arr = [];
        for (var i in data) {
            arr.push(i+"="+data[i]);
        }
        return arr.join("&");
    }
}
// 調(diào)用
ajax.request({
    type: "POST",
    url: "weibo.php",
    data: "act=update",
    success: function(res){
        console.log(res);
    }
});

可以看出調(diào)用的形式與jQuery的實現(xiàn)原理相似。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/53430.html

相關(guān)文章

  • Ajax學(xué)習(xí)筆記

    摘要:最近在學(xué),剛剛?cè)腴T,用到很多與相關(guān)的交互。也用了挺久的了,想寫一下學(xué)習(xí)筆記來記錄一下。實現(xiàn)過程是的基礎(chǔ),是核心對象,首先要實例化一個對象進行請求,規(guī)定請求的類型以及是否異步處理請求。響應(yīng)服務(wù)器狀態(tài)響應(yīng)服務(wù)器狀態(tài)涉及對象的三個重要的屬性。 最近在學(xué)php,剛剛?cè)腴T,用到很多與Ajax相關(guān)的交互。Ajax也用了挺久的了,想寫一下學(xué)習(xí)筆記來記錄一下。今天先簡單寫一下原理和過程。歡迎大家一起探...

    Forest10 評論0 收藏0
  • Laravel學(xué)習(xí)筆記之Demo2——用Ajax來做個ToDoList(待更新)

    摘要:抱歉,最近忙,本篇等有時間更新。引言本文基于框架做的一個生成和存儲,主要目的是學(xué)習(xí)使用框架。書籍基于的,學(xué)習(xí)時使用框架開發(fā)。開發(fā)環(huán)境備注一直想把這本書的個作為系列分享出來,供初學(xué)者學(xué)習(xí)玩玩。 抱歉,最近忙,本篇等有時間更新。 引言 本文基于Laravel框架做的一個URL生成和存儲demo,主要目的是學(xué)習(xí)使用Laravel框架。內(nèi)容基于英文書籍《Packt.Laravel.Applic...

    luck 評論0 收藏0
  • 網(wǎng)易微專業(yè)之《前端開發(fā)工程師》學(xué)習(xí)筆記(1)

    摘要:點擊此處了解網(wǎng)易微專業(yè)課程前段時間報名參加了網(wǎng)易云課堂微專業(yè)課程前端開發(fā)工程師,這周課程開始了,正式學(xué)習(xí)。以下內(nèi)容為前端開發(fā)工程師微專業(yè)的第一門課網(wǎng)頁制作的課程學(xué)習(xí)指南,學(xué)習(xí)視頻課程后自己整理的學(xué)習(xí)筆記,會持續(xù)更新內(nèi)容。 何為網(wǎng)易微專業(yè)? 微專業(yè)是由網(wǎng)易云課堂聯(lián)合各領(lǐng)域知名專家,以就業(yè)為導(dǎo)向,精心打造的職業(yè)培訓(xùn)方案。按要求完成學(xué)習(xí),考試通過可獲得專業(yè)認(rèn)定證書,令你求職或加薪多一份獨特優(yōu)...

    geekzhou 評論0 收藏0
  • 網(wǎng)易微專業(yè)之《前端開發(fā)工程師》學(xué)習(xí)筆記(1)

    摘要:點擊此處了解網(wǎng)易微專業(yè)課程前段時間報名參加了網(wǎng)易云課堂微專業(yè)課程前端開發(fā)工程師,這周課程開始了,正式學(xué)習(xí)。以下內(nèi)容為前端開發(fā)工程師微專業(yè)的第一門課網(wǎng)頁制作的課程學(xué)習(xí)指南,學(xué)習(xí)視頻課程后自己整理的學(xué)習(xí)筆記,會持續(xù)更新內(nèi)容。 何為網(wǎng)易微專業(yè)? 微專業(yè)是由網(wǎng)易云課堂聯(lián)合各領(lǐng)域知名專家,以就業(yè)為導(dǎo)向,精心打造的職業(yè)培訓(xùn)方案。按要求完成學(xué)習(xí),考試通過可獲得專業(yè)認(rèn)定證書,令你求職或加薪多一份獨特優(yōu)...

    劉東 評論0 收藏0
  • ajax學(xué)習(xí)筆記

    摘要:對象是的基礎(chǔ)使用它的和方法將請求發(fā)送到服務(wù)器或,請求的類型文件在服務(wù)器上的位置為異步,為同步將數(shù)據(jù)發(fā)送給服務(wù)器,僅用于方法當(dāng)設(shè)為時,即為異步時,規(guī)定響應(yīng)處于事件中的就緒函數(shù)的三個重要屬性每次發(fā)生改變時就會調(diào)用這個函數(shù)存儲著的狀態(tài),從到發(fā)生變 XMLHttpRequest對象是ajax的基礎(chǔ) 使用它的open()和send()方法將請求發(fā)送到服務(wù)器 var a=3; var requ...

    LeviDing 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<