如何在不重新加载 JSON 更新页面的情况下更新 div 的类和内容

翁德雷·卢雷

所以我有一个 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,这样我就不会在页面重新加载时出现令人不快的闪烁?

亚历克斯

您可以$.ajax()按照W3 Schools 的说明使用 jQuery 的方法

这是我的JSFiddle

在我的 Fiddle 中,我还使用了$.each()方法来解析JSON数据并将其附加到 div 中。

function GetPosts() {
  $.ajax({
    dataType: "json",
    url: "https://jsonplaceholder.typicode.com/posts",
    success: function(data) {
      //console.log(data);
      $.each(data, function(index, item) {
        console.log(item);
        $('.container').append('<div class="posts"><div id="post_container"><h3 id="post_title">' + item.title + '</h3><hr><div id="post_body">' + item.body + '</div><hr><span id="post_userid">' + item.id + '</span></div></div>');
      });
    }
  });
}

您还可以使用setInterval()函数来启用自动更新。

在这种情况下,您可以执行以下操作:

let interval;
let time = 5000; // 5 seconds

function startRefresh() {
    interval = setInterval(GetPosts(), time);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在不重新加载页面的情况下刷新div和mysql代码

如何在不刷新页面的情况下发布成功后更新页面内容

在不重新加载页面的情况下更新div-jQuery / Ajax setInterval

如何在不刷新页面的情况下更新列表

如何在不刷新页面的情况下更新会话存储数据?

如何在不刷新页面的情况下更新视频的数据属性?

如何在不刷新页面的情况下检测 Service Worker 更新?

导航时如何在不刷新页面的情况下将用户重新定位到另一页面的内容?

如何在不重新加载页面的情况下将textarea值转换为有意义的内容?

在ionic 4中如何在不重新加载或刷新页面的情况下获得类似帖子的状态?

如何使用SPServices更新页面的内容?

如何在不刷新页面的情况下点击按钮后显示本地存储的内容?

如何在不重新加载页面的情况下使用laravel ajax发布和获取评论?

如何在不重新加载页面的情况下更改标签的类属性和应用样式

如何在不使用MathJax刷新页面的情况下动态呈现Tex和LaTex公式?

如何在不重新加载页面的情况下更新 localStorage?

如何使用Express和Connect-Flash在不刷新页面的情况下显示Flash消息?

如何在不刷新的情况下从外部页面更新内容div-GAE

如何在没有刷新页面的情况下数据更改时自动更新vue组件

我有三个div,如何在不重新加载整个页面的情况下刷新第二个div?

如何在不重新加载网页的情况下使用离线Plotly和Pyramid更新地块?

如何在不刷新页面的情况下重新加载javascript

如何在不刷新页面的情况下格式化模态内容

如何在不重复所有内容的情况下制作新页面?(PHP,CSS,HTML)

如何在不刷新页面的情况下定期更新数据?

如果我不小心在地址栏中输入了某些内容,如何在不重新加载页面的情况下获取所访问网站的URL?

FB评论和共享在不刷新页面的情况下不会加载

如何在不刷新页面的情况下将文本和图像文件数据同时发送到 MySQL 数据库

如何在不重新加载页面的情况下使用javascript / jQuery更新URL或查询字符串?