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

JS 攔截全局ajax請求實例解析

 更新時間:2016年11月29日 09:45:10   投稿:mrr  
這篇文章主要介紹了JS 攔截全局ajax請求實例解析的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下

你是否有過下面的需求:需要給所有ajax請求添加統(tǒng)一簽名、需要統(tǒng)計某個接口被請求的次數(shù)、需要限制http請求的方法必須為get或post、需要分析別人網(wǎng)絡(luò)協(xié)議等等,那么如何做?想想,如果能夠攔截所有ajax請求,那么問題就會變的很簡單!😄,少年,想法有點大膽,不過,我欣賞!直接上輪子,Ajax-hook不僅可以滿足你想要的,同時可以給你更多。

Ajax-hook源碼地址 : https://github.com/wendux/Ajax-hook

如何使用

1.引入ajaxhook.js

<script src="wendu.ajaxhook.js"></script>

2.攔截需要的ajax 回調(diào)或函數(shù)。

hookAjax({
//攔截回調(diào)
onreadystatechange:function(xhr){
console.log("onreadystatechange called: %O",xhr)
},
onload:function(xhr){
console.log("onload called: %O",xhr)
},
//攔截函數(shù)
open:function(arg){
console.log("open called: method:%s,url:%s,async:%s",arg[0],arg[1],arg[2])
}
})

ok, 我們使用jQuery(v3.1) 的get方法來測一下:

// get current page source code 
$.get().done(function(d){
console.log(d.substr(0,30)+"...")
})

結(jié)果 :

> open called: method:GET,url:http://localhost:63342/Ajax-hook/demo.html,async:true
> onload called: XMLHttpRequest
> <!DOCTYPE html>
<html>
<head l...

攔截成功了! 我們也可以看到j(luò)Query3.1內(nèi)部已經(jīng)放棄onreadystatechange而改用onload了。

API

hookAjax(ob)

  • ob,類型是對象,key為想要攔截的回調(diào)或函數(shù),value為我們的攔截函數(shù)。
  • 返回值: 原始的 XMLHttpRequest。如果有寫請求不想被攔截,可以new 這個。

unHookAjax()

  • 卸載攔截;卸載后,攔截將失效。

改變ajax行為

攔截所有ajax請求,檢測請求method,如果是“GET”,則中斷請求并給出提示

hookAjax({
open:function(arg){
if(arg[0]=="GET"){
console.log("Request was aborted! method must be post! ")
return true;
}
} 
})

攔截所有ajax請求,請求統(tǒng)一添加時間戳

hookAjax({
open:function(arg){
arg[1]+="?timestamp="+Date.now();
} 
})

修改請求返回的數(shù)據(jù)“responseText”

hookAjax({
onload:function(xhr){
//請求到的數(shù)據(jù)首部添加"hook!" 
xhr.responseText="hook!"+xhr.responseText;
}
})

結(jié)果:

hook!<!DOCTYPE html>
<html>
<h...

有了這些示例,相信開篇提到的需求都很容易實現(xiàn)。最后測一下unHook

hookAjax({
onreadystatechange:function(xhr){
console.log("onreadystatechange called: %O",xhr)
//return true
},
onload:function(xhr){
console.log("onload called")
xhr.responseText="hook"+xhr.responseText;
//return true;
},
open:function(arg){
console.log("open called: method:%s,url:%s,async:%s",arg[0],arg[1],arg[2])
arg[1]+="?hook_tag=1";
},
send:function(arg){
console.log("send called: %O",arg[0])
}
})
$.get().done(function(d){
console.log(d.substr(0,30)+"...")
//use original XMLHttpRequest
console.log("unhook")
unHookAjax()
$.get().done(function(d){
console.log(d.substr(0,10))
})
})

輸出:

open called: method:GET,url:http://localhost:63342/Ajax-hook/demo.html,async:true
send called: null
onload called
hook<!DOCTYPE html>
<html>
<he...
unhook
<!DOCTYPE

注意

1.攔截函數(shù)返回值是一個boolean,如果為true則會阻斷ajax請求,默認(rèn)為false,不會阻斷請求。

2.所有的回調(diào)攔截函數(shù)的參數(shù)為當(dāng)前的XMLHttpRequest 實例,如onreadystatechange、onload;所有ajax原始方法的攔截函數(shù)會將原始參數(shù)以數(shù)組的形式傳遞給攔截函數(shù),你可以在攔截函數(shù)中修改它。

以上所述是小編給大家介紹的JS 攔截全局ajax請求實例解析,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 詳解javaScript中Number數(shù)字類型的使用

    詳解javaScript中Number數(shù)字類型的使用

    Number和Math都屬于JavaScript中的內(nèi)置對象,Number數(shù)字類型作為基礎(chǔ)數(shù)據(jù)類型,我們在開發(fā)過程中會經(jīng)常用到,包括數(shù)字精度的格式化,還有字符串轉(zhuǎn)換成數(shù)字等操作。本文將詳細(xì)講解其用法,感興趣的可以了解一下
    2022-04-04
  • JavaScript中數(shù)組成員的添加、刪除介紹

    JavaScript中數(shù)組成員的添加、刪除介紹

    這篇文章主要介紹了JavaScript中數(shù)組成員的添加、刪除介紹,本文主要講解push()、unshift()、pop()、shift()等函數(shù)的應(yīng)用,需要的朋友可以參考下
    2014-12-12
  • js工具方法彈出蒙版

    js工具方法彈出蒙版

    js工具方法彈出蒙版,需要的朋友可以參考一下
    2013-05-05
  • JS中常見的8種繼承方法總結(jié)

    JS中常見的8種繼承方法總結(jié)

    這篇文章主要給大家介紹了關(guān)于JS中常見的8種繼承方法,在js中所有的引用類型都繼承了Object,而繼承也是通過原型鏈實現(xiàn)的,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10
  • JS常用正則表達式總結(jié)【經(jīng)典】

    JS常用正則表達式總結(jié)【經(jīng)典】

    這篇文章主要介紹了JS常用正則表達式,總結(jié)分析了常見的數(shù)字、字符、郵箱、身份證、電話等的正則驗證技巧,需要的朋友可以參考下
    2017-05-05
  • 原生JavaScript實現(xiàn)精美的淘寶輪播圖效果示例【附demo源碼下載】

    原生JavaScript實現(xiàn)精美的淘寶輪播圖效果示例【附demo源碼下載】

    這篇文章主要介紹了原生JavaScript實現(xiàn)精美的淘寶輪播圖效果,結(jié)合完整實例形式詳細(xì)分析了javascript實現(xiàn)淘寶輪播圖功能的相關(guān)HTML布局、css及js核心功能代碼,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下
    2017-05-05
  • VS Code轉(zhuǎn)換大小寫、修改選中文字或代碼顏色的方法

    VS Code轉(zhuǎn)換大小寫、修改選中文字或代碼顏色的方法

    最近在使用VS Code,發(fā)現(xiàn)了不少使用的小技巧,覺著有必要給大家分享下,下面這篇文章主要給大家介紹了關(guān)于VS Code轉(zhuǎn)換大小寫、修改選中文字或代碼顏色的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-12-12
  • 深入淺出JavaScript中base64編碼原理

    深入淺出JavaScript中base64編碼原理

    今天翻開舊項目發(fā)現(xiàn)挺多圖片相關(guān)的插件都是用?base64?來顯示圖片的。談到?base64,腦海遐想翩翩,思緒回蕩之下?base64?瑕瑜互見。這篇文章主要是記錄了工作中遇見的問題并加以總結(jié),如有不妥請指正
    2023-02-02
  • 簡單談?wù)刯s的數(shù)據(jù)類型

    簡單談?wù)刯s的數(shù)據(jù)類型

    下面小編就為大家?guī)硪黄唵握務(wù)刯s的數(shù)據(jù)類型。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • 判斷JS對象是否擁有某屬性的方法推薦

    判斷JS對象是否擁有某屬性的方法推薦

    下面小編就為大家了一篇判斷JS對象是否擁有某屬性的方法推薦。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-05-05

最新評論

阿拉善左旗| 罗山县| 荣昌县| 永宁县| 丹阳市| 达日县| 天峻县| 道真| 静海县| 文安县| 龙南县| 秦安县| 德钦县| 迁西县| 灵川县| 扶沟县| 崇文区| 韩城市| 丹寨县| 明溪县| 南木林县| 黄平县| 敖汉旗| 察隅县| 黄冈市| 济南市| 和田县| 林西县| 武宁县| 孝昌县| 阳信县| 达州市| 白朗县| 湘乡市| 菏泽市| 仪陇县| 明星| 偏关县| 满城县| 团风县| 杂多县|