如何使用JSON结果更新Extjs Progress Bar?

时间:2009-11-17 04:26:04

标签: json extjs

我在获取进度条以从Json结果中检索其进度并根据每10秒的计时器检查更新进度条时遇到一些困难。

我可以像这样创建一个json结果:

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

我想一般的想法是,我需要一个间隔设置为10秒的任务,并让跑步者运行任务,当进度条开始工作时,跑步者将检查Json的结果,并且根据需要更新进度条。

到目前为止

代码:

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

话虽如此,我遇到了困难:

  1. 如何在任务中添加Json部分?
  2. 如何使用给定的Json结果更新进度条?
  3. 非常感谢。

2 个答案:

答案 0 :(得分:5)

我已经设法让它运行起来,显然这是我的问题中缺少的拼图。对于像我这样坚持这个的人。

基本上只需添加此部分即可从您指定的网址中检索json结果,并在成功时更新您的进度条。

最简单的代码嵌入你的任务中,如下所示:

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

答案 1 :(得分: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);