首先,感谢阅读。
我在GitHub上托管我当前的项目。使用GitHub页面,我]托管我的个人博客you can reach the blog here。
在博客上,我有一个专门介绍我目前正在进行的所有项目的页面。基本上,我想通过查询GitHub自动显示所有正在进行的项目的列表。
在谷歌搜索中,我发现this can be achieved using JavaScript。 我尝试过,但它没有按预期工作。加载页面时,我只收到短信“Quorying GitHub for repositories”。似乎没有任何事情发生。
我联系了GitHub维护者,他们回答说这种技术使用了过时版本的GitHub API。
由于我没有JavaScript经验,任何人都可以帮我修复它吗?
的问候,
罗兰。
以下是我在HTML page
中使用的代码<div id="opensource-projects"></div>
<!-- JavaScript to load and display repos from GitHub -->
<script src="http://ajax.microsoft.com/ajax/jquery/jquery-1.4.2.min.js" type="text/javascript"></script>
<script src="/javascripts/git.js" type="text/javascript"></script>
<script type="text/javascript">
$(function() {
$("#opensource-projects").loadRepositories("Yonaba");
});
</script>
然后,在文件git.js
内,我有以下内容:
// http://aboutcode.net/2010/11/11/list-github-projects-using-javascript.html
jQuery.githubUser = function(username, callback) {
jQuery.getJSON("http://github.com/api/v1/json/" + username + "?callback=?", callback);
}
jQuery.fn.loadRepositories = function(username) {
this.html("<span>Querying GitHub for " + username +"'s repositories...</span>");
var target = this;
$.githubUser(username, function(data) {
var repos = data.user.repositories;
sortByNumberOfWatchers(repos);
var list = $('<dl/>');
target.empty().append(list);
$(repos).each(function() {
list.append('<dt><a href="'+ this.url +'">' + this.name + '</a></dt>');
list.append('<dd>' + this.description + '</dd>');
});
});
function sortByNumberOfWatchers(repos) {
repos.sort(function(a,b) {
return b.watchers - a.watchers;
});
}
};
@jcolebrand:感谢您的帮助,但我并没有真正理解您的意思。我也尝试向Chrome控制台发送一些命令。我猜$
是jQuery的别名,不是吗?好吧,发送相同的东西控制台只输出多个对象,描述我的回购。真棒!
我认为问题现在正确解析它们并显示它们。哎呀,我需要学习JavaScipt语法...
答案 0 :(得分:7)
您发布的脚本无效,因为该URL适用于较旧的API。将URL更改为此,它应该适合您。
https://api.github.com/users/YOUR_USERNAME_HERE/repos?callback=CALLBACK
注意:callback=<YOUR_CALLBACK>
是可选的。
答案 1 :(得分:2)
http://developer.github.com/v3/非常清楚如何做到这一点。事实上,由于我和那里的用户名是相同的,让我告诉你。
我在github上打开了我的repo页面,https://github.com/jcolebrand(所以到目前为止这很明显)并在Chrome中按F12。
我询问是否确实安装了jQuery,因为我在做示例时喜欢快捷方式。
我接着在API页面中完全测试了$.getJSON('//api.github.com/users/jcolebrand/repos',{},function(data){console.log(data)})
,正如它所说的那样,并且看,我被授予我自己看到的五个回购。
以下是我没有做过的事情:我没有获得API密钥,我没有通过API工作,而且我使用了现有的凭据。记住这些事情,但这就是如何改进它。
答案 2 :(得分:0)
你也可以使用github API lib。这个lib是我最喜欢的https://github.com/michael/github
答案 3 :(得分:0)
使用JQuery
的{{1}}快捷键XMLHttpRequest
扩展到@JColebrand的答案,这是一个2020年可用的API调用。
$.getJson()
user = 'tik9'
apirepo = `https://api.github.com/users/${user}`
listrepos = document.createElement('ul')
document.getElementById('github').appendChild(listrepos)
$.getJSON(apirepo + '/repos', function (data) {
console.log('data now', data)
function compare(a, b) {
if (a.watchers > b.watchers) {
return -1
}
if (a.watchers < b.watchers) {
return 1
}
return 0
}
data.sort(compare)
data.forEach(v => {
listItemRepo = document.createElement('li')
listrepos.appendChild(listItemRepo)
hlink = document.createElement('a')
listItemRepo.appendChild(hlink)
hlink.textContent = `${v.description} | Stars: ${v.watchers}`
hlink.href = v.html_url
})
})