【问题标题】:Get the JSON file every n minutes每 n 分钟获取一次 JSON 文件
【发布时间】:2014-03-28 01:27:14
【问题描述】:

我已经编写了获取 JSON 文件并对其进行处理的代码。但该文件每 5 分钟更新一次。所以我希望我的代码在不引起刷新的情况下获取新数据。

这是我获取 JSON 文件的方式。

    $.getJSON("new_json_file.json", function (data) {
        $.each(data, function (i, item) {
//Here I am working on the data
});
});

谁能帮忙?

【问题讨论】:

  • 你试过setInterval()吗?

标签: jquery ajax json refresh


【解决方案1】:

使用setInterval

setInterval(30000, function() {

  $.getJSON("new_json_file.json", function (data) {
        $.each(data, function (i, item) {
  //Here I am working on the data
  });
  });

});

【讨论】:

  • setInterval 不是最好的方法。 getJSON的成功回调超过5分钟怎么办?
  • @Archer。你不知道。我同意你的解决方案很好。我只是提供一个替代方案。不要误会我的意思。但为了争论,人们也可以说 setTimeout 可能不是最好的方法,如果它需要 4 分钟来获取并且我希望每 5 分钟显示一次更新。使用您的解决方案,更新将改为每 9 分钟出现一次。虽然,我同意电话不会重叠。我给你。
  • 我只是说“如果”,并不是说它需要更长的时间。当然,这极不可能,但需要提及。
【解决方案2】:

将您的代码包装在一个函数中,然后它可以使用setTimeout 在 5 分钟后再次运行...

function getData() {
    $.getJSON("new_json_file.json", function (data) {
        $.each(data, function (i, item) {
            //Here I am working on the data
        });
        setTimeout(getData, 300000);
    });
}
getData(); // run once to start it

【讨论】:

  • 感谢@A.Wolff(出于某种原因可以提及您)。那是一个小学生的错字!
  • 它破坏了代码,我认为是因为它需要第一次从外部调用 getData()。
  • @user2798227 是的,看来您面临范围问题
  • 尝试将$("#containerID").empty(); 放在success 函数中,以清空放置按钮的容器元素(显然更改ID 以适合您的选择器)。
  • Ajax 只是一种从服务器获取数据的方法——它根本不对页面内容做任何事情——这就是成功回调函数的用途。所以在填充之前清空容器元素是最简单的方法。
猜你喜欢
  • 2013-03-14
  • 2015-02-20
  • 1970-01-01
  • 1970-01-01
  • 2017-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多