2013-01-23 128 views
4

我一直在尋找一個或兩個問題的答案,但我還沒有找到一個。我有一個外部應用程序正在定期修改TSV文件(添加數據)。我使用的是Basic Line Chart example顯示的數據,它看起來真的不錯:重新加載TSV文件而不刷新頁面

enter image description here

現在我希望在TSV文件被更新的數據進行更新。我希望能夠對從tsv文件中提取的數據設置自動刷新,並重新填充圖表而不用刷新整個頁面。

我試着將當前的代碼包裝在一個函數中,並在該函數上調用setInterval,但每次數據都保持不變(可能是因爲它被緩存了?)。

理想情況下,解決方案將是一個函數,可以調用更新,只要我想(基於用戶事件,計時器,無論)。

任何想法,鏈接或建議的替代方法來實現相同的目標將不勝感激!

作爲一個額外的問題:我知道D3可能不是這種Psudo-Real-Time數據顯示的正確選擇。是否有其他軟件包可以幫助更多?生成數據的應用程序是一個C#應用程序(以防萬一結束)。

編輯:作爲一個補充說明,想象一下這個例子,但是從一個文件中讀取數據:http://mbostock.github.com/d3/tutorial/bar-2.html

+0

你可以發佈一些骨架代碼來顯示你如何使用'setInterval'和'd3.tsv'嗎? –

回答

0

如果您正在執行一個Ajax調用從服務器獲取數據,你認爲緩存是一個問題,你可以嘗試在你的代碼中任何地方的jquery's ajaxSetupcache參數設置爲false破壞緩存:

$.ajaxSetup({cache: false}); 

從文檔:

如果設置爲false,則會強制請求的頁面不被 瀏覽器緩存。注意:將緩存設置爲false只能在HEAD和 GET請求中正常工作。它通過在GET參數中附加「_ = {timestamp}」來工作。 參數對於其他類型的請求不需要,除非在IE8中對 POST發出的GET請求已被請求的URL。

+0

我正在使用示例中顯示的d3函數(d3.tsv(file,callback))。不幸的是,添加你建議的命令似乎只是打破了整個頁面(儘管我不能告訴你爲什麼...)。我的服務器甚至不顯示正在請求的文件。謝謝你的想法! – user986122

+0

瀏覽器是否顯示正在進行和正在提供的請求,可能來自緩存?通過在每次調用中將時間戳作爲查詢參數附加到'd3.tsv(file,cb)'中的'file',您可以達到與'$ ajaxSetup({cache:false})'相同的效果。當然,假設一個雜散查詢參數不會對查詢結果產生不利影響。 –

相關問題