1.問題:
打算學習下vue,但是vue-resource作者已經不更新了,并且大家都建議用axios來進行前後端互動,是以就從學習axios開始。
但是在使用 axios 的過程中,自己寫的接口竟然通路不到,jquery可以通路但是axios不能通路。post也能通路就是axios不能通路。
axios.post('test',{})
.then(function (response){
console.log('axios.post:');
console.log(response.data);
})
.catch(function (error){
console.log(error);
});
axios({
url: 'test',
method: 'post',
responseType: 'json', // 預設的json
data: {
//'a': 1,
//'b': 2,
}
}).then(function (response) {
console.log('axios:');
console.log(response);
console.log(response.data);
}).catch(function (error) {
console.log(error);
});
$.ajax({
type: 'POST',
url: 'test',
data: {},
success: function(data) {
console.log("ajax:");
console.log(data);
},
error: function() {}
});

可以看到 axios 為null;
2.原因:
單個字元串json沒有解析,直接傳回的text格式。。。。
@RequestMapping(value="/test")
public String test() {
return "hello world!";
}
3.解決:
把 responseType: 'json' 改成 responseType: 'text'
即可。
但是 post 方法 和 jquery 就沒有這種煩惱,不管是 text 還是 json 都能直接判斷,可能是 responseType 這個屬性寫死的緣故吧。
如果有前端大佬解釋下不勝感激。