d3.json和servlet doGet请求

时间:2012-07-18 01:44:04

标签: json servlets get d3.js

我想通过doGet请求从servlet传递json,用d3动态可视化一些java代码的输出...

我知道我可以用d3做一个HTTP请求......

d3.json("data.js", function(data) { alert(data.length) });

但是,我想每秒更新一次可视化。调用回调函数是否会执行另一个请求并接收一个新的json对象,还是只使用我第一次收到的json?

我打算每隔一秒钟使用一个js计时器来请求新的json ...想看看我是否可以使用回调函数接收更新的json。谢谢!

1 个答案:

答案 0 :(得分:0)

调用d3.json(<url>, <callback>)执行异步请求。所以你需要每秒钟调用一次:

setInterval(function() {
  d3.json(<url>, <callback>);
}, 1000);

但是,如果服务器响应缓慢,则可能导致积压的请求建立。相反,您可以在每次收到数据时请求更多数据:

fetch();
function fetch() {
  d3.json("more.json", function(json) {
    // Update visualisation here…
    setTimeout(fetch, 1000); // fetch more data after 1000ms
  });
}

另一方面,如果出现错误响应,这将停止请求数据(因为D3.js当前没有告诉您是否发生错误)。如果要处理错误,可以直接使用XMLHttpRequest。