对于询问看起来像是一个常见问题的问题而道歉,但我似乎无法从jsonp获取数据。
我尝试了以下内容:
window.onload = () => {
var app = new Vue({
el: '#app',
data: {
myData:[],
t1:''
},
methods:{
get(){
this.$http.jsonp('https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su'),{
wd:this.t1
},{
jsonp:'cb'
}.then((res)=>{
this.myData = res.data.s;
},()=>{
alert(res.status)
})
}
}
})
}
和
<div id="app">
<input type="text" v-model='t1' @keyup='get()'>
<ul>
<li v-for='item in myData'>item</li>
</ul>
<p v-show='myData.length == 0'>empty...</p>
我该如何解决?
非常感谢任何帮助!
答案 0 :(得分:1)
不用担心!我让a JSFiddle试图找出你的具体问题。似乎百度不允许你更改jsonp回调的名称,或者至少不允许我使用我尝试过的任何参数,例如cb
或callback
或jsonpCallback
等等等等。
然后我尝试告诉vue-resource手动将实际回调名称设置为window.baidu.sug
,但它没有appear that vue-resource can handle设置嵌套在其他对象中的自定义回调名称。
简而言之,您正在做没有错误,并且您的问题有两种可能的解决方案:
您知道baidu API是否允许您通过查询参数设置jsonp回调函数的名称?如果是这样,这将是您的问题的最快解决方案。然后,您可以将jsonp
选项设置为baidu用于设置查询参数名称的查询参数的名称。我在文档中找不到它,但似乎cb
不是正确的查询参数名称,或者根本不支持它。
向vue-resource提交PR,该PR正确支持嵌套在其他对象中的回调函数。需要在here附近进行更改。