欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2016年10月04日 11:12:43   作者:邢澤川  
大家都知道jquery在我們?nèi)粘i_發(fā)中的使用頻率非常高,但jquery說到底還是對js的封裝,我們不能光會使用,只有知道了其中的遠(yuǎn)離才能更好的使用,所以這篇文章主要介紹的是原生js仿jquery實現(xiàn)對Ajax封裝的方法。

前言

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

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

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

函數(shù)封裝:

1、封裝一個輔助函數(shù),把傳進來的對象拼接成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);
          }
        }
      }
   }  
}

總結(jié)

以上就是原生js仿jquery實現(xiàn)對Ajax封裝的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

相關(guān)文章

  • JS實現(xiàn)淘寶幻燈片效果的實現(xiàn)方法

    JS實現(xiàn)淘寶幻燈片效果的實現(xiàn)方法

    淘寶幻燈片效果:能自動播放,鼠標(biāo)指向或者點擊數(shù)字按鈕就能切換圖片。
    2013-03-03
  • js Dialog 去掉右上角的X關(guān)閉功能

    js Dialog 去掉右上角的X關(guān)閉功能

    用到 dialog彈出框時,不想要右上角的X 關(guān)閉功能,只是做個提示信息顯示,下面是具體的去掉方法,大家可以參考下
    2014-04-04
  • JavaScript實現(xiàn)動態(tài)表單生成

    JavaScript實現(xiàn)動態(tài)表單生成

    這篇文章主要來和大家一起深入探討如何使用JavaScript實現(xiàn)一個動態(tài)表單生成器,文中的示例代碼講解詳細(xì),有需要的小伙伴可以參考一下
    2024-01-01
  • JavaScript簡單修改窗口大小的方法

    JavaScript簡單修改窗口大小的方法

    這篇文章主要介紹了JavaScript簡單修改窗口大小的方法,涉及javascript中moveTo與resizeTo方法的相關(guān)使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-08-08
  • javascript中的offsetWidth、clientWidth、innerWidth及相關(guān)屬性方法

    javascript中的offsetWidth、clientWidth、innerWidth及相關(guān)屬性方法

    這篇文章主要介紹了javascript中的offsetWidth、clientWidth、innerWidth及相關(guān)屬性方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • three.js歐拉角和四元數(shù)的使用方法

    three.js歐拉角和四元數(shù)的使用方法

    這篇文章主要給大家介紹了關(guān)于three.js歐拉角和四元數(shù)的使用方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者使用three.js具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • JS實現(xiàn)按比例縮小圖片寬高

    JS實現(xiàn)按比例縮小圖片寬高

    這篇文章主要為大家詳細(xì)介紹了JS實現(xiàn)按比例縮小圖片寬高,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • webpack熱模塊替換(HMR)/熱更新的方法

    webpack熱模塊替換(HMR)/熱更新的方法

    模塊熱替換(HMR)的作用是,在應(yīng)用運行時,無需刷新頁面,便能替換、增加、刪除必要的模塊,本篇文章主要介紹了webpack熱模塊替換(HMR)/熱更新的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • httpclient模擬登陸具體實現(xiàn)(使用js設(shè)置cookie)

    httpclient模擬登陸具體實現(xiàn)(使用js設(shè)置cookie)

    最簡單的方法就是通過得到的cookie定制一個httpclient,感興趣的朋友可以了解下本文
    2013-12-12
  • 使用JavaScript動態(tài)設(shè)置樣式實現(xiàn)代碼及演示動畫

    使用JavaScript動態(tài)設(shè)置樣式實現(xiàn)代碼及演示動畫

    使用onmouseover和onmouseout事件實現(xiàn)不同的效果而且是使用js動態(tài)實現(xiàn),本文有利于鞏固你js與css方面的知識,感興趣的你可以了解下哦,希望本文對你有所幫助
    2013-01-01

最新評論