此问题在此处已有答案:
How do I return the response from an asynchronous call?(44个答案)
10天前关闭。
我正在试着做一个简单的程序来从GitHub API获取最新的版本,并将其与本地JSON文件进行比较。我使用jQuery来使获取信息变得更容易。如果来自API的版本与本地文件的版本不同,这个脚本应该会在控制台中打印出该版本已过期。但我一直收到程序无法读取变量的错误。我试着把Cversion
和Lversion
变成全局变量,放在window下面,这样你就可以用window.cversion调用它,但是它仍然返回undefined。我以前试着声明变量,比如var Lversion;
,但是同样的,undefined。有什么提示吗?
下面是主index.html文件的代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
</head>
<body>
<p>Latest release: <span id="tag_name">Loading...</span></p>
<p>Current release (the site): <span id="version">Loading...</span></p>
<p>Is this site up to date? <span id="uptodate">Loading...</span></p>
<script src="jquery-3.2.1.min.js"></script>
<script>
$.getJSON("https://api.github.com/repos/3kh0/3kh0.github.io/releases/latest", function (data) {
window.Lversion = data.tag_name;
document.getElementById("tag_name").innerText = Lversion;
});
$.getJSON("about.json", function (cur) {
window.Cversion = cur.version;
document.getElementById("version").innerText = Cversion;
});
if (window.Lversion === window.Cversion) {
console.log("Up to date! " + window.Cversion);
document.getElementById("uptodate").innerText = "Yes";
} else {
console.warn("Out of date, latest version: " + window.Lversion);
document.getElementById("uptodate").innerText = "No";
}
</script>
</body>
</html>
about.json
{
"version": "v3-22.11.28"
}
1条答案
按热度按时间oyjwcjzk1#
使用常规promise或jquery示例。
警告:这是完全未经测试的代码
第一个