50l*_*l3r 2 javascript ajax vue.js axios
我有这个功能:
add(App, Params, Callback){
var self = this;
var Data = self.process_fields(Params)
self.$http.post(
paths.api + '/app/' + App.Permalink,
new URLSearchParams(Data)
).then(function (error, response) {
console.log("then");
if (typeof (Callback) == "function") {
Callback(true, response.data.data);
}
}).catch(function(error){
console.log("catch");
if(typeof error.response !== "undefined"){
errors.render(error.response.data.error)
}
if (typeof (Callback) == "function") {
Callback(false, null);
}
});
}
Run Code Online (Sandbox Code Playgroud)
当我致电request并收到400错误时,它致电,而不是catch:
我找到了解决方案
由axios拦截器中的不返回promise引起的问题:
axios.interceptors.response.use((response) => {
return response;
}, (error) => {
if (!error.response) {
alert('NETWORK ERROR')
} else {
const code = error.response.status
const response = error.response.data
const originalRequest = error.config;
if (code === 401 && !originalRequest._retry) {
originalRequest._retry = true
auth.commit('logout');
window.location.href = "/login";
}
return Promise.reject(error)
}
});
Run Code Online (Sandbox Code Playgroud)
增添return Promise.reject(error)魅力
小智 5
这是旧版本 Axios 有意为之的。
validateStatus自 v0.11 起已添加到配置中。我们可以使用此选项来指定有效的状态代码范围。默认情况下,有效代码为 >= 200 且 < 300。
validateStatus: function (status) {
return status >= 200 && status < 300; // default
},
Run Code Online (Sandbox Code Playgroud)
参考: https: //github.com/axios/axios/issues/41#issuecomment-215100137
| 归档时间: |
|
| 查看次数: |
2632 次 |
| 最近记录: |