首先描述一下问题。
由于特殊原因,在使用jsonp调用跨域请求时,回调函数是写在其中一个params里面,并不和params平级,而vue-resource会自动生成一个callback函数,造成回调函数名称对应不上,一直报错。
简单点说就是:vue-resource不能自定义回调函数名称。
解决路径:翻阅了所有baidu google,找不到解决方法。
一气之下直接去翻看源码,发现源码每次都会自动生产回调函数,而且是强制生成,一怒之下直接修改源码。
找到vue-resource里的jsonpClient方法。
看到callback = '_jsonp'+ Math.random().toString(36).substr(2)
修改为:callback = request.params.callback ||'_jsonp'+ Math.random().toString(36).substr(2)
重新打包,在params里定义自定义回调函数,问题解决。完毕。希望对后面踩坑着有所帮助。
调用方式:this.$http.jsonp(url,{params:{"callback":"jsonPCallback"}}).then(function(response){
console.log(response.body);
})
网友评论