我一直在尝试使用Javascript检索有关特定仓库的最新提交的信息,但没有太多结果。
我一直在使用XMLHttpRequest
从repo的提交页面获取数据(例如:https://api.github.com/repos/trapped/rotmg_svr/commits),但似乎它返回null。
此外,我尝试使用正则表达式来获取特定行值的第一个匹配项(例如,为了获取提交描述的值,我使用了这个:"message": "(.*)",
),使其遍历所有行,直到它找到了一些东西(在我发布的代码中,我暂时将其更改为行号,试图加快流程,因为它不起作用)。
此外,在尝试加载页面时,它会阻止。正如我以前使用C#的webclient建议的那样,它可能与XMLHttpRequest事件有关(事实上,当我尝试调试它时返回一个未定义的对象)。
提前感谢所有帮助。
var messagelineindex = 14;
var linklineindex = 17;
var response = "";
function loadcommits() {
httpGet("https://api.github.com/repos/trapped/rotmg_svr/commits");
var lines = response.split("\n");
var message = parsemessage(lines[messagelineindex]);
var link = parselink(lines[linklineindex]);
addcommit(/<a href="/+link+/">/+message+"</a>");
//for (var i = 0; i < numlines; i++) {
// var line = lines[i];
// var commitmessage = parsemessage(line);
// if (commitmessage != "") {
// addcommit(commitmessage);
// break;
// }
//}
}
function parselink(text) {
var regex = /"link": "(.*)",/;
var match = regex.exec(text);
if (!match) {
return "";
}
else {
return match[1];
}
}
function parsemessage(text) {
var regex = /"message": "(.*)",/;
var match = regex.exec(text);
if (!match) {
return "";
}
else {
return match[1];
}
}
function addcommit(text) {
document.getElementById("commits").innerHTML = document.getElementById("commits").innerHTML + text.toString() + "\n\r";
}
function httpGet(theUrl) {
var xmlHttp = null;
xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = function () {
if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
response = xmlHttp.responseText;
}
}
xmlHttp.open("GET", theUrl, false);
xmlHttp.send(null);
}