无法获取 JSONP 数据

Cannot get JSONP data

很抱歉问了一个常见问题,但我似乎无法从 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>

我该如何解决?

非常感谢任何帮助!

不用担心!我做了 a JSFiddle 来尝试找出您的具体问题。百度似乎不允许您更改 jsonp 回调的名称,或者至少不允许使用我尝试过的任何参数,例如 cbcallbackjsonpCallback 等等等等。

然后我试图告诉 vue-resource 手动将实际回调名称设置为 window.baidu.sug 但它不会 appear that vue-resource can handle 设置嵌套在其他对象中的自定义回调名称。

简而言之,什么都没做错了,你的问题有两种可能的解决方案:

  1. 不知道那个baidu API 允许你通过查询参数设置jsonp 回调函数的名称吗?如果是这样,这将是解决您问题的最快方法。然后,您可以将 jsonp 选项设置为百度用来设置查询参数名称的查询参数名称。我在文档中找不到它,但似乎 cb 不是正确的查询参数名称,或者即使它完全受支持。

  2. vue-resource that properly supports callback functions nested in other objects. The change would need to be made somewhere around here 提交 PR。