2012-07-18 39 views
0

我想从通过的doGet请求一个servlet通过JSON动态可视化与D3一些Java代码输出...d3.json和servlet的doGet请求

我知道我可以做D3的HTTP请求这样做...

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

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

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

回答

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。