我在使用vue-resource的vue.http.jsonp时发现请求参数需要用params包装起来,官方并没有任何说明,这就已经够坑了。。但是下面更坑
this.$http.jsonp('http://XXX.XXX.XXX.5/api/v1/stock/list', { params: { account:'8888', data:'{"page":2,"rows":10,"timestamp":'+t+'}' }, jsonp:"_callback" }).then(function(data){ console.log(12323); console.log(data); },function(err){ console.log(123123); console.log(err); });
浏览器报json格式错误
但是请求却已经成功了
响应数据在请求内都已有,但是浏览器却报错,这种情况在jquery上并没有发生,jquery jsonp跨域处理后状态码200,并没有浏览器的json格式报错,请问是否有人遇到过这种情况呢?如何解决
作者已经在微博上宣布不再将vue-resource作为官方推荐的插件了
所以建议使用ES5的fetch来代替
我想可能和 Content-Type
有关系吧,vue-resource
默认是application/json
你写个这行代码 全局配置试试Vue.http.options.emulateJSON = true;
使http请求格式便成为application/x-www-form-urlencoded
传递的是JSON,或者JSON对象就行啊。你params里面的属性不需要加“”,么。写个简单的JSON看看还会不会报错。
我的用法,仅供参考
created () { this.$http.jsonp('').then((response) => { response = response.body console.log(response) }, (error) => { console.log(error.message) }) }