2009-11-17 27 views
3

我正在面臨一些困難,讓我的進度條從Json結果中檢索它的進度,並根據每10秒的定時器檢查更新進度條。如何使用JSON結果更新Extjs進度條?

我能夠創造這樣的JSON結果:

{"success":true, "progress":0.2} 

我想總的想法是,我需要的間隔設定一個任務10秒,並且具有亞軍運行任務,當進度條開始工作時,跑步者將檢查Json的結果,並根據需要更新進度條。

到目前爲止的代碼:

var task = { 
    run: function(){ 
     // what to add here? 
    }, 
     interval: 10000 
    } 
} 

話雖這麼說,我有上的各種困難:

  1. 我如何在任務添加JSON的部分?
  2. 如何用給定的Json結果更新進度條?

非常感謝。

回答

5

我已經設法啓動並運行,顯然這是我的問題缺失的拼圖。對於那些像我這樣陷入困境的人來說。

基本上只是添加這個部分,它將檢索你指定的url的json結果,並在成功更新你的進度條。

而且最低限度代碼嵌入你的任務中,像這樣:

Ext.Ajax.request({ 
      url: 'getStatus', 
      success: function(r) { 
       var i = Ext.decode(r.responseText).progress; 
       progressbar.updateProgress(count +' completed'); 
      } 
}); 
+2

@jl:+1很高興在這種情況下回答你的問題 – RageZ 2009-11-17 08:07:40

0

我不知道你在運行什麼堆棧,但你可以在一般方法方面做什麼。


如何在任務中添加Json部分?

如果你有權訪問memcached或類似的東西,你可以用它來存儲你的任務進度。以同樣的方式,你可以使用數據庫甚至文件,因爲你想存儲什麼只是一個數字。

之後如何給出你不知道需要多少時間的各種任務的進度號。我會說如果你的處理是基於循環的,比如你更新了n行,你可以用它作爲米。

我認爲你不必擔心進度計是準確的,只是它應該給出一個粗略的想法,處理的地方。


如何用給定的Json結果更新進度條?

ExtJS有一個TaskManager它允許你每隔n秒做一個ajax查詢並提取進度並更新附加的進度條。

// Start a simple clock task that updates a div once per second 
var task = { 
    run: function(){ 
     Ext.fly('clock').update(new Date().format('g:i:s A')); 
    }, 
    interval: 1000 //1 second 
} 
Ext.TaskMgr.start(task); 
+0

感謝RageZ。這不是我正在尋找的,我已經得到了這一部分。無論如何,我設法弄清楚了這個問題。 – 2009-11-17 07:07:57

+0

@jl:ha對不起,我以爲你需要一些'HOWTO',它更關聯如何真正更新進度條? – RageZ 2009-11-17 07:11:55

+0

@RageZ:沒問題,謝謝你回覆我的問題。是的,這更多的是如何抓取數據並將其扔到進度條上。這是我錯過的Ajax請求。再次感謝。 – 2009-11-17 07:20:30