在和后端數據交互的時候有些時候會遇到一些有權限的接口,
后端沒有設置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就可以了。