【发布时间】:2018-05-25 20:54:42
【问题描述】:
所以我有一个 JSON 数据库,它经常根据我更新页面的内容进行更新。目前我正在使用这个脚本重新加载:
var previous = null;
var current = null;
setInterval(function() {
$.getJSON("sampledatabase.json", function(json) {
current = JSON.stringify(json);
if (previous && current && previous != current) {
console.log('refresh');
location.reload();
}
previous = current;
});
}, 1200);
问题是它应该用于在大屏幕上全屏监控,所以重新加载时眨眼有点分散注意力。
刷新时(在数据库更新时发生)我正在更改 div 的类,并用数据库中的更多数据填充它们(只是代码的一部分)
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function () {
if (this.readyState == 4 && this.status == 200) {
var i;
var output = document.getElementsByClassName("env");
var myObj = JSON.parse(this.responseText);
for (i = 0; i < output.length; i++) {
if (myObj.instances[i].status == "UP") {
output[i].classList.add("passed")
} else output[i].classList.add("notPassed")
output[i].innerHTML = "<span class=\"originalsize\">" + myObj.instances[i].id + "</SPAN>" + "<br>" + myObj.instances[i].time
}
}
};
xmlhttp.open("GET", "sampledatabase.json", true);
xmlhttp.send();
有没有办法只更新 div,这样我就不会在页面重新加载时出现令人不快的闪烁?
【问题讨论】:
-
将
location.reload()替换为来自XMLHttpRequest的成功回调,然后丢弃XMLHttpRequest。 (为什么要同时使用XMLHttpRequest和$.getJSON?)
标签: javascript jquery html css ajax