获取Raw Gist文件

ken*_*dds 1 javascript gist github same-origin-policy

我想要的很简单.有没有办法(包括解决方法)使这项工作?

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();
}
Run Code Online (Sandbox Code Playgroud)

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

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.
Run Code Online (Sandbox Code Playgroud)

这是有道理的,我知道我不会让GitHub打开他们的访问控制,但是如果有一个解决方法,或者如果我做错了那就太好了.

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

Hello World!
You
Rock!
Run Code Online (Sandbox Code Playgroud)

现在是这样的:

Hello World!YouRock!
Run Code Online (Sandbox Code Playgroud)

提前致谢.

编辑新行的问题是我需要修复的问题,而不是一个要点.

jnv*_*jnv 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
});
Run Code Online (Sandbox Code Playgroud)

的jsfiddle

将JSONP与原始XHR一起使用有点复杂,但你可以使用比jQuery 更轻的东西.