关于vue-resource的一点问题

我在使用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格式报错,请问是否有人遇到过这种情况呢?如何解决

阅读 5.4k
5 个回答

作者已经在微博上宣布不再将vue-resource作为官方推荐的插件了
所以建议使用ES5的fetch来代替

我的用法,仅供参考

created () {
  this.$http.jsonp('').then((response) => {
    response = response.body
    console.log(response)
  }, (error) => {
    console.log(error.message)
  })
}

传递的是JSON,或者JSON对象就行啊。你params里面的属性不需要加“”,么。写个简单的JSON看看还会不会报错。

我想可能和 Content-Type有关系吧,vue-resource默认是application/json
你写个这行代码 全局配置试试
Vue.http.options.emulateJSON = true;
使http请求格式便成为application/x-www-form-urlencoded

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题