jquery AJAX 攔截器 success error


在和后端數據交互的時候有些時候會遇到一些有權限的接口,

后端沒有設置Status Code,返回的是Status Code:200,jquery的ajax就會進入到success方法里。

需要每個接口手動判斷,就會顯得很繁瑣,大量的代碼冗余。

上一篇博客自己寫了個鈎子函數,這篇就做了應用,不會用的去我上篇博客看下。

下面這些代碼就解決了這個問題:

<script src="http://www.melaolao.com/test/work/js/jquery-3.3.1.js"></script>
<script src="http://www.melaolao.com/test/work/js/hook.js"></script>
<script>


//先鈎了 jquer的ajaxSetup,因為在調用 $.ajax()會執行一次$.ajaxSetup()
setHook($, "ajaxSetup", function () {
var settings=arguments[1];
if(settings){//判斷是否是調用$.ajax()觸發的jquer.ajaxSetup函數。 //settings是調用$.ajax()傳的參數
//這里hook用到的函數 例子是 success ,error
if(settings.success){
//這里再鈎了success方法
setHook(settings,'success',function () {
alert("hook success 成功");
})
}
if(settings.error){
setHook(settings,'error',function () {
alert("hook error 成功");
})
}
}
})


$.ajax({
url: "urlurlurlurl",
success: function () {
alert(111)
},
error:function (data) {
alert(222)
//先彈窗 “hook error 成功” 再彈窗222
}
})

</script>

上一篇博客自己寫了個鈎子函數,這篇就做了應用,不會用的去我上篇博客看下。

其實這並不是最推薦的方法 ,最簡單的是后端把Status Code直接設置成錯誤代碼 40X,這樣jquery只需要全局配置 error就可以了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM