jsonp获取数据

使用jsonp跨域请求数据得到这个

clipboard.png
但是当我点开他的时候显示这个

clipboard.png
请问我该如何获取那些数据呢
这是我的代码

clipboard.png

clipboard.png

阅读 4k
3 个回答

jsonp 原理去看一波
可以用,你访问https://api.bilibili.com/x/we... 会拿到一堆数据。
你之所以没能操作数据,是因为,你的callback还没写。并且没有把你的路径放到src上面。
原理是img和script的src是可以跨域的。img上面跨域拿其他网站的图片是可以的。
而script的src上面可以引入js用于跨域。
这就是为什么要去了解jsonp的原理。你代码写好了,但是没有动态生成script标签。
上面已经有人这么做了。

<script src="https://api.bilibili.com/x/web-show/res/loc?jsonp=jsonp&pf=7&id=1695&callback=jsonBack">
  function jsonBack(res){
      console.log(res)
   }
</script>

我这是现成的。他是动态的。其实就是便于你理解。你可能缺少的把url拼接好,放到src上面去
为了便于你理解,我放个链接https://www.zhihu.com/questio...

我看你的response好像没有设置函数去处理数据?JSONP是要设置处理函数的,网址跟本地JS都要,像这样

var url = "https://api.bilibili.com/x/web-show/res/loc?jsonp=jsonp&pf=${pf}&id=${id}&callback=jsonBack";
function jsonp(obj){
var script = document.createElement("script");
script.src = url.replace(/\${(\w+)}/g,function(a,b){if(b in obj){return obj[b];}return "";});
document.body.appendChild(script);
}
function jsonBack(data){
console.log("Json Date: ",data);
}
jsonp({pf:7,id:1695});

这个要看你的 jsonp 函数是怎么处理的,看代码的样子 getShows() 最后 return 了获取到的数据的,你直接 var rst = getShows() ,这个 rst 就是获取到的数据

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题