首先描述一下問(wèn)題酝蜒。
由于特殊原因咙俩,在使用jsonp調(diào)用跨域請(qǐng)求時(shí),回調(diào)函數(shù)是寫(xiě)在其中一個(gè)params里面窒典,并不和params平級(jí)蟆炊,而vue-resource會(huì)自動(dòng)生成一個(gè)callback函數(shù),造成回調(diào)函數(shù)名稱對(duì)應(yīng)不上瀑志,一直報(bào)錯(cuò)涩搓。
簡(jiǎn)單點(diǎn)說(shuō)就是:vue-resource不能自定義回調(diào)函數(shù)名稱。
解決路徑:翻閱了所有baidu google劈猪,找不到解決方法昧甘。
一氣之下直接去翻看源碼,發(fā)現(xiàn)源碼每次都會(huì)自動(dòng)生產(chǎn)回調(diào)函數(shù)战得,而且是強(qiáng)制生成充边,一怒之下直接修改源碼。
找到vue-resource里的jsonpClient方法常侦。
看到callback = '_jsonp'+ Math.random().toString(36).substr(2)
修改為:callback = request.params.callback ||'_jsonp'+ Math.random().toString(36).substr(2)
重新打包浇冰,在params里定義自定義回調(diào)函數(shù),問(wèn)題解決聋亡。完畢肘习。希望對(duì)后面踩坑著有所幫助。
調(diào)用方式:this.$http.jsonp(url,{params:{"callback":"jsonPCallback"}}).then(function(response){
console.log(response.body);
})