2012-07-18 60 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。