国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

原生js實(shí)現(xiàn)ajax及get post方法

pkhope / 444人閱讀

摘要:使用過(guò)的同學(xué),應(yīng)該對(duì)事件綁定方法有一定的了解。實(shí)現(xiàn)方式以下為個(gè)人類庫(kù)中實(shí)現(xiàn)方式。代碼中使用到一個(gè)基礎(chǔ)方法對(duì)象,該對(duì)象為的基礎(chǔ)類。如果想了解更多,可以通過(guò)點(diǎn)擊進(jìn)入查看原碼。

使用過(guò)jQuery的同學(xué),應(yīng)該對(duì)事件綁定方法ajax有一定的了解。 在個(gè)人類庫(kù)jTool 中實(shí)現(xiàn)了這個(gè)方法,這里就來(lái)細(xì)說(shuō)下原生實(shí)現(xiàn)方式。
實(shí)現(xiàn)方式
以下為個(gè)人類庫(kù)jTool 中 Ajax 實(shí)現(xiàn)方式。
代碼中使用到一個(gè)基礎(chǔ)方法對(duì)象utilities ,該對(duì)象為jTool 的基礎(chǔ)類。 如果想了解更多,可以通過(guò)點(diǎn)擊進(jìn)入查看原碼。
/*
 * ajax
 * type === GET: data格式 name=baukh&age=29
 * type === POST: data格式 { name: "baukh", age:29 }
 * 與 jquery 不同的是,[success, error, complete]返回的第二個(gè)參數(shù), 并不是返回錯(cuò)誤信息, 而是錯(cuò)誤碼
 * */
var extend = require("./extend");
var utilities = require("./utilities");
function ajax(options) {
    var defaults = {
        url: null,// 請(qǐng)求地址
        type: "GET",// 請(qǐng)求類型
        data: null,// 傳遞數(shù)據(jù)
        headers: {},// 請(qǐng)求頭信息
        async: true,// 是否異步執(zhí)行
        beforeSend: utilities.noop,// 請(qǐng)求發(fā)送前執(zhí)行事件
        complete: utilities.noop,// 請(qǐng)求發(fā)送后執(zhí)行事件
        success: utilities.noop,// 請(qǐng)求成功后執(zhí)行事件
        error: utilities.noop// 請(qǐng)求失敗后執(zhí)行事件
    };
    options = extend(defaults, options);
    if (!options.url) {
        utilities.error("jTool ajax: url不能為空");
        return;
    }
    var xhr = new XMLHttpRequest();
    var formData = "";
    if (utilities.type(options.data) === "object") {
        utilities.each(options.data, function (key, value) {
        if(formData !== "") {
            formData += "&";
        }
        formData += key + "=" + value;
        });
    }else {
        formData = options.data;
    }
    if(options.type === "GET" && formData) {
        options.url = options.url + (options.url.indexOf("?") === -1 ?  "?" : "&") + formData;
        formData = null;
    }
    xhr.open(options.type, options.url, options.async);
    for (var key in options.headers) {
        xhr.setRequestHeader(key, options.headers[key]);
    }
    // xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    // 執(zhí)行發(fā)送前事件
    options.beforeSend(xhr);
    // 監(jiān)聽(tīng)onload并執(zhí)行完成事件
    xhr.onload = function() {
        // jquery complete(XHR, TS)
        options.complete(xhr, xhr.status);
    };
    // 監(jiān)聽(tīng)onreadystatechange并執(zhí)行成功失敗事件
    xhr.onreadystatechange = function() {
        if (xhr.readyState !== 4) {
            return;
        }
        if (xhr.status >= 200 && xhr.status < 300 || xhr.status === 304) {
            // jquery success(XHR, TS)
            options.success(xhr.response, xhr.status);
        } else {
        // jquery error(XHR, TS, statusText)
            options.error(xhr, xhr.status, xhr.statusText);
        }
    };
    xhr.send(formData);
}
function post(url, data, callback) {
    ajax({ url: url, type: "POST", data: data, success: callback });
}
function get(url, data, callback) {
    ajax({ url: url, type: "GET", data: data, success: callback });
}
module.exports = {
    ajax: ajax,
    post: post,
    get: get
};

隨筆一行
這是前端最好的時(shí)代, 這也是前端最壞的時(shí)代。 眾多前端框架滿天飛,隨著 jQuery 在前端行業(yè)的慢慢弱化,總是會(huì)有一種斯人遠(yuǎn)去,何者慰籍的感覺(jué)。互勉吧,各位。

另推薦個(gè)表格組件gridManager

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/109789.html

相關(guān)文章

  • 原生JS與jQuery對(duì)AJAX實(shí)現(xiàn)

    摘要:原生與對(duì)的實(shí)現(xiàn)一定義里這么解釋異步的和。二原生實(shí)現(xiàn)所有現(xiàn)代瀏覽器以及均內(nèi)建對(duì)象。一般是正常未找到頁(yè)面,一般是錯(cuò)誤,或者后臺(tái)沒(méi)有創(chuàng)建相應(yīng)的內(nèi)部服務(wù)錯(cuò)誤,多為后臺(tái)錯(cuò)誤。基本上通過(guò)發(fā)送的數(shù)據(jù)及傳回的數(shù)據(jù)就能定位問(wèn)題所在了。 原生JS與jQuery對(duì)AJAX的實(shí)現(xiàn) 一、定義 W3C里這么解釋AJAX: AJAX = Asynchronous JavaScript and XML(異步的 Jav...

    Chaz 評(píng)論0 收藏0
  • 深入淺出Ajax

    摘要:在接收響應(yīng)期間持續(xù)不斷地觸發(fā)。在請(qǐng)求發(fā)生錯(cuò)誤時(shí)觸發(fā)。在通信完成或者觸發(fā)或事件后觸發(fā)。已經(jīng)接收到部分響應(yīng)數(shù)據(jù)。基于標(biāo)準(zhǔn)被廣泛支持。破壞程序的異常處理機(jī)制。 原文(我的GitHub):https://github.com/liangfengbo/frontend-ability/issues/1 學(xué)習(xí)大綱 理解Ajax的工作原理 Ajax核心-XMLHttpRequest對(duì)象 封裝Aja...

    megatron 評(píng)論0 收藏0
  • 前端相關(guān)大雜燴

    摘要:希望幫助更多的前端愛(ài)好者學(xué)習(xí)。前端開發(fā)者指南作者科迪林黎,由前端大師傾情贊助。翻譯最佳實(shí)踐譯者張捷滬江前端開發(fā)工程師當(dāng)你問(wèn)起有關(guān)與時(shí),老司機(jī)們首先就會(huì)告訴你其實(shí)是個(gè)沒(méi)有網(wǎng)絡(luò)請(qǐng)求功能的庫(kù)。 前端基礎(chǔ)面試題(JS部分) 前端基礎(chǔ)面試題(JS部分) 學(xué)習(xí) React.js 比你想象的要簡(jiǎn)單 原文地址:Learning React.js is easier than you think 原文作...

    fuyi501 評(píng)論0 收藏0
  • Ajax詳解

    摘要:當(dāng)請(qǐng)求完成后注冊(cè)一個(gè)回調(diào)函數(shù)。該請(qǐng)求是否觸發(fā)全局處理事件如等,請(qǐng)求發(fā)送前的回調(diào)函數(shù),用來(lái)修改請(qǐng)求發(fā)送前,此功能可用來(lái)設(shè)置自定義頭信息,在函數(shù)中返回將取消這個(gè)請(qǐng)求。例如,為請(qǐng)求指定一個(gè)回調(diào)函數(shù)名。即改變回調(diào)函數(shù)的,默認(rèn)就是傳入的整個(gè)對(duì)象。 Ajax Ajax 全稱是 asynchronous javascript and xml,并不是新的編程語(yǔ)言,可以說(shuō)是已有技術(shù)的組合,主要用來(lái)實(shí)現(xiàn)客...

    jokester 評(píng)論0 收藏0
  • 溫故js系列(12)-ajax&&優(yōu)缺點(diǎn)&&node后端

    摘要:接收響應(yīng)當(dāng)請(qǐng)求發(fā)送到服務(wù)器端,收到響應(yīng)后,響應(yīng)的數(shù)據(jù)會(huì)自動(dòng)填充對(duì)象的屬性。一般而已狀態(tài)代碼為作為成功的標(biāo)志。必要時(shí),可以將查詢字符串參數(shù)追加到的末尾,以便提交給服務(wù)器。后端實(shí)現(xiàn)可以自學(xué)一點(diǎn)后端知識(shí),便于學(xué)習(xí)。 前端學(xué)習(xí):教程&開發(fā)模塊化/規(guī)范化/工程化/優(yōu)化&工具/調(diào)試&值得關(guān)注的博客/Git&面試-前端資源匯總 歡迎提issues斧正:Ajax JavaScript-Ajax&&no...

    LiangJ 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<