无法获取JSONP数据

时间:2018-04-15 13:56:23

标签: javascript vue.js jsonp

对于询问看起来像是一个常见问题的问题而道歉,但我似乎无法从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>

我该如何解决?

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

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

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

简而言之,您正在做没有错误,并且您的问题有两种可能的解决方案:

  1. 您知道baidu API是否允许您通过查询参数设置jsonp回调函数的名称?如果是这样,这将是您的问题的最快解决方案。然后,您可以将jsonp选项设置为baidu用于设置查询参数名称的查询参数的名称。我在文档中找不到它,但似乎cb不是正确的查询参数名称,或者根本不支持它。

  2. vue-resource提交PR,该PR正确支持嵌套在其他对象中的回调函数。需要在here附近进行更改。