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 这个属性写死的缘故吧。
如果有前端大佬解释下不胜感激。