<font id="zqva1"></font>
<rt id="zqva1"></rt>
  • <tt id="zqva1"></tt>
    <cite id="zqva1"></cite>

    <cite id="zqva1"><noscript id="zqva1"></noscript></cite>
      <rp id="zqva1"><meter id="zqva1"></meter></rp>

        <cite id="zqva1"></cite>
          <b id="zqva1"></b>
          <rp id="zqva1"></rp>
          <cite id="zqva1"></cite>

          <rt id="zqva1"></rt>

        1. <rp id="zqva1"></rp>

          原生js實現ajax請求封裝,類似于jquery的操作

          時間:?2017-10-19閱讀:?1732標簽:?封裝

          js實現ajax的原理:通過XMLHttpRequest對象向服務器發送異步請求,從服務器獲得數據,然后使用js操作DOM更新數據。該對象是ajax的核心機制,他是在IE5中首先引入的,是一種支持異步請求的技術。通過ajax可以及時的向服務器提出請求和處理響應,而不阻塞用戶,達到無刷新更新部分頁面的效果。

          XMLHttpRequest這個對象的屬性有
              onreadystatechange 每次狀態改變所觸發事件的事件處理程序;
              responseText 從服務器進程返回數據的字符串形式;
              responseXML 從服務器進程返回的DOM兼容的文檔數據對象;
              status 從服務器返回的數字代碼,常見的200(客戶端請求成功,已就緒)和404(請求資源不存在)
              statusText 伴隨狀態碼的字符串信息 (eg:200 OK)

          readyState 對象狀態值
              0(未初始化狀態)對象已建立或已被abort()方法重置,尚未調用open方法。
              1(初始化狀態)open()方法已經調用,但是send()方法為調用。請求還沒有被發送。
              2(發送數據)send()方法法以調用,HTTP請求已發送到Web服務器。未接收到響應。
              3(數據傳送中)所有響應頭部都已經接收到。響應體開始接受但未完成。
              4(完成加載)HTTP響應已經完全接收。

          代碼實現
          var _url=www.***.com;//請求地址
          function ajax(conf) { //ajax封裝,url參數必填,
          	var url=conf.url.indexOf('http://')>=0 || conf.url.indexOf('https://')>=0?conf.url:(_url+conf.url);
          	var data=conf.data;
          	var send_data=[];//封裝后的數據
          	var async=conf.async!=undefined ? conf.async : true;// ture為異步請求 
          	var type=conf.type || 'get';
          	var dataType=conf.dataType || 'json';
          	var contenType =  conf.contenType || 'application/x-www-form-urlencoded';
          	var beforeSend=conf.beforeSend;//post請求頭部
          	var success=conf.success;
          	var error=conf.error;	
          	if(data==null){
          		send_data="";
          	}else if( typeof data=="object"){//如果data是對象,轉換為字符串
          		for (var k in data){
          			//send_data.push(k + '=' + data[k]);
          			send_data.push(encodeURIComponent(k) + '=' + encodeURIComponent(data[k]));
           		}
          		send_data=send_data.join('&');
          	}
          	var xhr=""; // 創建ajax引擎對象
          	try {
          		xhr=new ActiveXObject("microsoft.xmlhttp"); //IE內核系列瀏覽器
          	}catch(e1){
          		try {
          			xhr=new XMLHttpRequest(); //非IE內核瀏覽器
          		}catch(e2){
          			if(error!=null){error("您的瀏覽器不支持ajax!請更換!");}
          		}
          	}
          	if(type=="get"){	
          		xhr.open(type, url+'?'+send_data, async);
          		xhr.send(null);
          	}else{//post,put,delete等請求
          
                          xhr.open(type, url, async); 
          		xhr.setRequestHeader("content-type", contenType);
          		if(beforeSend!=null && beforeSend!=undefined){
          			beforeSend(xhr);
          		}
          		xhr.send(send_data);
              }
          	xhr.onreadystatechange=function() {
          		if(xhr.readyState==4){
          			if(xhr.status>=200 && xhr.status<300){
          				if(dataType=="text" && success!=null){
          					success(xhr.responseText);
          				};
          				if(dataType=="xml" && success!=null){
          					success(xhr.responseXML);
          				};
          				if(dataType=="json" && success!=null){
          					success(eval("(" + xhr.responseText + ")")); //將json字符串轉換為js對象  
          				};
          			}else{
          				if(error!=null){error("通訊失敗!請聯系網站管理員,錯誤代碼:"+xhr.status);}
          			}
          		}
          	};
          },
          使用方法
          ajax({
          	url:'',//地址
          	type:'post',//方式
          	data:{},//數據
          	success:function(r){
          		
          	},
          	error:function(r){
          		
          	}
          });



          站長推薦

          1.阿里云: 本站目前使用的是阿里云主機,安全/可靠/穩定。點擊領取2000元代金券、了解最新阿里云產品的各種優惠活動點擊進入

          2.騰訊云: 提供云服務器、云數據庫、云存儲、視頻與CDN、域名等服務。騰訊云各類產品的最新活動,優惠券領取點擊進入

          3.廣告聯盟: 整理了目前主流的廣告聯盟平臺,如果你有流量,可以作為參考選擇適合你的平臺點擊進入

          鏈接: http://www.modern-decoration.com.cn/article/detial/3

          原生JS實現動畫函數的封裝

          封裝了一個JS方法,支持元素的基本動畫:寬、高、透明度...等,也支持鏈式動畫和同時運動。獲取元素的屬性的函數并進行了兼容性處理:

          ant design vue 表格a-table二次封裝,slots渲染問題

          目的就是對a-table進行二次封裝,但是在如何顯示a-table的slot時遇到了問題,原本想法是在a-table內把$slots都渲染,期望在使用該組件時能正確渲染,然而。。。并不會正確渲染

          JS封裝getScroll函數 & 案例:固定導航欄

          封裝getScroll函數:1. 獲取頁面向上或者向左卷曲出去的距離的值,2. 瀏覽器的滾動事件。固定導航欄獲取scrollTop值后判斷高度大于導航欄的高,就設置樣式固定住

          JS多態封裝繼承

          JS是一種基于對象的語言,在JS中幾乎所有的東西都可以看成是一個對象,但是JS中的對象模型和大多數面向對象語言的對象模型不太一樣,因此理解JS中面向對象思想十分重要,接下來本篇文章將從多態、封裝、繼承

          JS防抖函數、節流函數工具類封裝

          當持續觸發事件時,一定時間段內沒有再觸發事件,事件處理函數才會執行一次, 如果設定時間到來之前,又觸發了事件,就重新開始延時。也就是說當一個用戶一直觸發這個函數,且每次觸發函數的間隔小于既定時間

          使用Promise封裝小程序wx.request

          現在嘗試把wx.request簡單的封裝了一下,調用一個request方法,每次請求自動攜帶header頭信息,這樣就省事多了,包含了常見的get post put delete 四種請求方法,支持Promise方式調用。

          原生js實現ajax的封裝

          ajax 的全稱是Asynchronous JavaScript and XML,簡單理解下:ajax就是異步的js和服務端的數據;GET請求的數據會附在URL之后, 以 ? 分割URL和傳輸數據, 參數之間以 & 相連

          JQuery組件封裝之return this.each(function () {});

          這個時候就要說each了,還是之前的,倘若頁面上有N個class為div的元素呢,即:this.length>1,這里each就必然要上場了,且每個對象都要返回,所以此段代碼無疑是最方便的寫法了

          微信和支付寶中的一些常用方法封裝

          最近做了同一個樣子的小程序的支付寶版本,現在如果想想是開發兩次的話心里應該是很難受的。去年11月12月份左右開發了兩個微信小程序是一個在超市買商品的,一個用戶版本,一個商戶版本的。我們團隊看到了uniapp這個東西

          關于那些變化萬千,開箱即用的 Promise 高度封裝方法

          在日常開發中,我們少不了使用 Promise,而透過封裝抽象方法,可以避免造輪子,寫出更加優雅的代碼。例如:將任意函數,化為具有異步能力的函數、改裝成具有并發上千萬請求的函數、使用 Web Worker 來使用不同線程、暫停若干秒再繼續

          內容以共享、參考、研究為目的,不存在任何商業目的。其版權屬原作者所有,如有侵權或違規,請與小編聯系!情況屬實本人將予以刪除!

          文章投稿關于web前端網站點搜索站長推薦網站地圖站長QQ:522607023

          小程序專欄: 土味情話心理測試腦筋急轉彎幽默笑話段子句子語錄成語大全運營推廣

          国产精品高清视频免费 - 视频 - 在线观看 - 影视资讯 - 唯爱网