这是我失败的代码
    $.ajax({
        type: "get",
        url: "http://open.douyucdn.cn/api/RoomApi/live/lol",
        dataType: "jsonp",
        jsonp: "callback",
        jsonpCallback: "data",
        success: function(response) {
            console.log(response);
        }
    });
[斗鱼 TV API 文档]http://dev-bbs.douyutv.com/forum.php?mod=attachment&aid=MjU5fGQyMzMyMjQ3fDE0ODQzNTc1MzR8MHwxMTM%3D
我去 google 后,了解到返回的数据是 json 格式,但我如果将 dataType 的 value 改成 json 后,又会出现跨域问题。 这期间我尝试使用 script 直接调用该链接,但还是同样的问题, 贴出失败的代码:
var url = "http://open.douyucdn.cn/api/RoomApi/live/lol";
    var script = document.createElement("script");
    script.setAttribute("src", url);
    document.getElementsByTagName("head")[0].appendChild(script);
我觉得我的问题应该归纳为:如何使用 javascript 在跨域条件下调用 json 格式数据? 希望大家能指导我一下,谢谢!
这个问题来源于 freecodecamp 上的一个小题目, [题目地址]: https://www.freecodecamp.com/challenges/use-the-twitchtv-json-api
我只是将其中的 twitch API 改为斗鱼 API
|  |      1donlxn22      2017-01-14 09:43:38 +08:00 via iPhone 浏览器中跨域需要目标服务器(斗鱼)做允许跨域的配置。具体来说,斗鱼服务器,应该在你发送请求的 response 中加入允许跨域的几个 header 。 | 
|  |      2cyr1l      2017-01-14 09:43:43 +08:00 via iPhone 因为斗鱼不支持 JSONP ,你可以先研究一下 JSONP 实现跨越的原理,就能明白为什么会出错了,这里的解决办法可能只有用后端代理了。 | 
|      3Alture OP | 
|  |      4cyr1l      2017-01-14 10:13:11 +08:00 via iPhone  1 @Alture 公开 API 并不代表允许跨域哦,一般来说都是针对后端请求的,他的 api 既不支持跨域的 header 也不支持 jsonp ,所以只能通过后端程序去中转。做一个反向代理也不麻烦,可以慢慢学一点后端语言。其实不用后端语言,仅用 nginx 配置一下也能实现代理中转。另外如果是 Chrome Extension 的话是可以跨域的,不需要中转服务器。 | 
|  |      6MaqicXu      2017-01-14 11:02:06 +08:00 via iPhone 如果只是要完成功能,用 node request 去抓 |