获取Raw Gist文件

时间:2013-08-11 01:11:03

标签: javascript github gist allow-same-origin

我想要的很简单。是否有任何方法(包括解决方法)使这项工作?

function loadXMLDoc() {
  var request = new XMLHttpRequest();
  var gistRawFileUrl = 'https://gist.github.com/kentcdodds/5822336/raw/6ef128c8c8d6fe416782d969efa95d36e0acf374/KentsBlog.md';

  request.onreadystatechange = function() {
    if (request.readyState === 4 && request.status === 200) {
      var gistFileContent = request.responseText;
      doSomethingCool(gistFileContent);
    }
  };

  request.open('GET', gistRawFileUrl, true);
  request.send();
}

现在,如果我在控制台中执行此操作,我将获得:

XMLHttpRequest cannot load https://gist.github.com/kentcdodds/5822336/raw/6ef128c8c8d6fe416782d969efa95d36e0acf374/KentsBlog.md. Origin http://stackoverflow.com is not allowed by Access-Control-Allow-Origin.

这是有道理的,而且我知道我不会让GitHub打开他们的访问控制,但是如果有解决这个问题或者我做错了什么就会很棒。

我意识到你可以通过点击JSONP端点来获取文件的内容,但这不会给你换行符,所以曾经这样:

Hello World!
You
Rock!

现在是这样的:

Hello World!YouRock!

提前致谢。

编辑新行的问题是我需要修复的问题,而不是Gist的事情。

1 个答案:

答案 0 :(得分:9)

查看此答案:https://stackoverflow.com/a/10454873/240963

API端点将为您提供Gist中每个文件的内容,包括格式。唯一的缺点是,即使您已经知道原始文件的URL,也需要传输额外的数据。

我们可以简化原始答案中的代码,因为您不想解析JSON并且您可能知道文件名:

$.ajax({
  url: 'https://api.github.com/gists/'+gistid,
  type: 'GET',
  dataType: 'jsonp'
}).success( function(gistdata) {
    var content = gistdata.data.files[filename].content;
    DoSomethingWith(content)
  }).error( function(e) {
  // ajax error
});

JSFiddle

将JSONP与原始XHR一起使用有点复杂,但您可以使用something lighter而不是jQuery。