2013-08-11 2 views
1

Что я хочу, просто. Есть ли способ (включая работу), чтобы сделать эту работу?Get Raw Gist File

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.

+0

Возможно, это сработает? https://github.com/kares/script.js – kentcdodds

+0

Я проголосовал за то, чтобы закрыть это, потому что это никому не полезно в будущем. Проблема не была связана с чтением исходных данных из github. – kentcdodds

+0

В комментарии ОП сказал, что хочет, чтобы это было закрыто. – Mike

ответ

8

Заканчивать этот ответ: https://stackoverflow.com/a/10454873/240963

API конечной точки даст вам содержимое каждого файла в пределах сутью, включая форматирование. Единственным недостатком является то, что вам необходимо передать дополнительные данные, даже если вы уже знаете 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.

+0

В моем вопросе я объясняю, что свойство содержимого файла не имеет новых строк ... – kentcdodds

+0

Новые строки экранируются как \ n, как вы можете видеть: https://api.github.com/gists/cde117d171aeb720cbc6?callback = loadfromgist - также обратите внимание, что новые строки восстанавливаются в скрипте: http://jsfiddle.net/J4n7u/3/ Новые строки должны анализироваться автоматически в JSONP, даже без jQuery: http://jsfiddle.net/whGrY/ – jnv

+1

I Извините, вы абсолютно правы. Новые строки были другой проблемой, которую I * может * исправить. Благодаря! – kentcdodds