1

我想要的很简单。有什么办法(包括变通方法)来完成这项工作吗?

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 问题。

4

1 回答 1

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 一起使用有点复杂,但您可以使用比 jQuery更轻的东西。

于 2013-08-11T10:56:10.753 回答