2014-02-25 91 views
1

我已經編寫了獲取JSON文件並對其進行處理的代碼。但該文件每5分鐘更新一次。所以我希望我的代碼在不刷新的情況下獲取新數據。每n分鐘獲取JSON文件

這是我如何獲得JSON文件。

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

任何人都可以幫忙嗎?

+0

你嘗試過'setInterval()'嗎? –

回答

5

包裝你的代碼的功能,然後它可以使用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 
+0

謝謝@ A.Wolff(由於某種原因可以提及你)。那是一個男生錯字! – Archer

+0

它破壞了代碼,我認爲這是因爲它需要第一次從外部調用getData()。 – user2798227

+0

@ user2798227雅,看起來像你正在面臨的範圍問題 –

1

使用setInterval

setInterval(30000, function() { 

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

}); 
+1

'setInterval'是不是最好的方式來做到這一點。如果getJSON的成功回調需要5分鐘以上的時間呢? – Archer

+0

@Archer。你不知道。我同意你的解決方案是好的。我只是提供一個替代方案。 不要誤解我的意思。但出於參數的緣故,如果需要4分鐘的時間,setTimeout可能不是最好的方式,我希望每5分鐘顯示一次更新。使用您的解決方案,更新將每9分鐘顯示一次。 雖然,我同意電話不會重疊。我給你。 – palanik

+0

我只說「如果」,而不是*會花費更長的時間。這當然不太可能,但需要提及。 – Archer