3
06/11/2024 5:47 pm
Konu başlatıcı
Write a JS program that loads all commit messages and their authors from a github repository using a given HTML.
HTML Template
You are given the following HTML:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Github Commits</title>
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
</head>
<body>
GitHub username:
<input type="text" id="username" value="nakov" /> <br>
Repo: <input type="text" id="repo" value="nakov.io.cin" />
<button onclick="loadCommits()">Load Commits</button>
<ul id="commits"></ul>
<script>
function loadCommits() {
// AJAX call …
}
</script>
</body>
</html>
Bu loadCommits function should get the username and repository from the HTML textboxes with ids "username" and "repo" and make a GET request to the Github API:
"https://api.github.com/repos/<username>/<repository>/commits"
Swap <username> and <repository> with the ones from the HTML:
- In case of success, for each entry, add a list item (li) in the unordered list (ul) with id= "commits" with text in the format: "<commit.author.name>: <commit.message>"
- In case of error and a single list item (li) with text in the format: "Error: <error.status> (<error.statusText>)"
Screenshots:

1 Yanıt
2
06/11/2024 5:49 pm
>> HERE YOU CAN VIEW AND TEST THE PROJECT ONLINE << (on GitHub io)
My solution is (HTML file first):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Github Commits</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://code.jquery.com/jquery-3.2.1.js"></script>
<script src="github-commits.js"></script>
</head>
<body>
GitHub username:
<input type="text" id="username" value="nakov"/> <br>
Repo: <input type="text" id="repo" value="nakov.io.cin"/>
<button onclick="loadCommits()">Load Commits</button>
<ul id="commits"></ul>
</body>
</html>
github-commits.js JavaScript file (the solution):
function loadCommits() {
$("#commits").empty();
let url = "https://api.github.com/repos/" +
$("#username").val() + "/" +
$("#repo").val() + "/commits";
$.get(url)
.then(displayCommits)
.catch(displayError);
function displayCommits(commits) {
for (let commit of commits) {
$("#commits").append($("<li>").text(
commit.commit.author.name + ": " +
commit.commit.message
));
}
}
function displayError(err) {
$("#commits").append($("<li>").text(
"Error: " +
err.status + " (" + err.statusText + ")"));
}
}
