最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

原生js實現(xiàn)對Ajax的封裝(仿jquery)

 更新時間:2017年01月22日 10:42:45   作者:邢澤川  
這篇文章主要為大家詳細(xì)介紹了原生js實現(xiàn)對Ajax的封裝,模仿jquery,具有一定的參考價值,感興趣的小伙伴們可以參考一下

前言

眾所周知,jquery在我們?nèi)粘i_發(fā)中的使用頻率非常高,與js相比,我們省去了冗長的獲取元素的代碼,不用考慮一些麻煩的兼容問題,更加方便的動畫實現(xiàn),以及更加方便的方法調(diào)用讓我們覺得jquery真是越用越舒服。但是jquery說到底還是對js的封裝,我們不光要用的舒服還要深入理解其中的原理,這樣才能更好的使用它。

首先我們封裝的函數(shù)為了能實現(xiàn)可傳入無限多個參數(shù),在使用我們即將封裝的函數(shù)時,需要使用對象進(jìn)行傳參,形式如下:

//data作為參數(shù)傳入我們下面封裝的函數(shù)
var data = {
       //數(shù)據(jù)
       user:"yonghu1",
       pass:'12345',
       age:18,
       //回調(diào)函數(shù)
       success:function (data){
        alert(data);
       }
      }

函數(shù)封裝:

1、封裝一個輔助函數(shù),把傳進(jìn)來的對象拼接成url的字符串

function toData(obj){
  if (obj == null){
    return obj;
  }
  var arr = [];
  for (var i in obj){
    var str = i+"="+obj[i];
    arr.push(str);
  }
  return arr.join("&");
}

2、封裝Ajax

function ajax(obj){
  //指定提交方式的默認(rèn)值
  obj.type = obj.type || "get";
  //設(shè)置是否異步,默認(rèn)為true(異步)
  obj.async = obj.async || true;
  //設(shè)置數(shù)據(jù)的默認(rèn)值
  obj.data = obj.data || null;
  if (window.XMLHttpRequest){
    //非ie
    var ajax = new XMLHttpRequest();
  }else{
    //ie
    var ajax = new ActiveXObject("Microsoft.XMLHTTP");
  }
  //區(qū)分get和post
  if (obj.type == "post"){
    ajax.open(obj.type,obj.url,obj.async);
    ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    var data = toData(obj.data);
    ajax.send(data);
  }else{
    //get test.php?xx=xx&aa=xx
    var url = obj.url+"?"+toData(obj.data);
    ajax.open(obj.type,url,obj.async);
    ajax.send();
  }

  ajax.onreadystatechange = function (){
    if (ajax.readyState == 4){
        if (ajax.status>=200&&ajax.status<300 || ajax.status==304){
          if (obj.success){
            obj.success(ajax.responseText);
          }
        }else{
          if (obj.error){
            obj.error(ajax.status);
          }
        }
      }
   }  
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 用JavaScript實現(xiàn)字符串切分功能

    用JavaScript實現(xiàn)字符串切分功能

    用JavaScript實現(xiàn)字符串切分功能...
    2007-01-01
  • 封裝html的select標(biāo)簽的js操作實例

    封裝html的select標(biāo)簽的js操作實例

    本文將為大家介紹下正如標(biāo)題所示的select操作:清空所有的選項、添加一個選項、根據(jù)值、選中一個選項、根據(jù)下標(biāo),選中一個選項,感興趣的朋友可以參考下哈,希望對大家有所幫助
    2013-07-07
  • 自動最大化窗口的Javascript代碼

    自動最大化窗口的Javascript代碼

    有時候我們需要在用戶進(jìn)入頁面的時候,自動最大化,更好的體驗,省去用戶點擊最大化按鈕,很多文章內(nèi)容網(wǎng)站都加了這個代碼
    2013-05-05
  • 微信小程序圖片選擇區(qū)域裁剪實現(xiàn)方法

    微信小程序圖片選擇區(qū)域裁剪實現(xiàn)方法

    本篇文章主要介紹了微信小程序圖片選擇區(qū)域屏裁剪實現(xiàn)方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • js實現(xiàn)移動端輪播圖滑動切換

    js實現(xiàn)移動端輪播圖滑動切換

    這篇文章主要為大家詳細(xì)介紹了js實現(xiàn)移動端輪播圖滑動切換,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • 對采用動態(tài)原型方式無法展示繼承機制得思考

    對采用動態(tài)原型方式無法展示繼承機制得思考

    今天看書,作者討論到能否采用動態(tài)原型方法展示繼承機制,給出的答案是:不能。原因是prototype對象的唯一性。看下面代碼(這段代碼不正確,卻值得研究)
    2009-12-12
  • JavaScript中DOM操作常用事件總結(jié)

    JavaScript中DOM操作常用事件總結(jié)

    這篇文章主要為大家詳細(xì)介紹了JavaScript中常用的幾個DOM事件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-04-04
  • JavaScript實現(xiàn)控制并發(fā)請求數(shù)量的方法詳解

    JavaScript實現(xiàn)控制并發(fā)請求數(shù)量的方法詳解

    這篇文章主要為大家詳細(xì)介紹了JavaScript如何實現(xiàn)控制并發(fā)請求數(shù)量,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-02-02
  • 純js的右下角彈窗實例

    純js的右下角彈窗實例

    下面小編就為大家?guī)硪黄僯s的右下角彈窗實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • 淺析Virtual DOM的概念與其在現(xiàn)代前端框架中的實踐

    淺析Virtual DOM的概念與其在現(xiàn)代前端框架中的實踐

    這篇文章將深入探討Virtual DOM(虛擬DOM)的概念,分析其對前端開發(fā)的革新影響,并以此展示前端技術(shù)的深度和魅力,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-12-12

最新評論

庆阳市| 通河县| 定兴县| 扎兰屯市| 明光市| 社会| 井研县| 鹤岗市| 柳林县| 交城县| 泽库县| 牙克石市| 饶河县| 西贡区| 辽宁省| 石屏县| 乌苏市| 涞源县| 类乌齐县| 宣城市| 彭水| 财经| 响水县| 托里县| 磐安县| 通江县| 二连浩特市| 城口县| 长岛县| 修文县| 平乡县| 府谷县| 卫辉市| 临洮县| 灵台县| 栖霞市| 德江县| 龙州县| 泸西县| 平陆县| 舞钢市|