0

我一直在尝试使用 Javascript 检索有关特定 repo 的最新提交的信息,但没有很多结果。我一直在使用 aXMLHttpRequest从 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);
}
4

0 回答 0