2009-11-17 45 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