首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取BackgrounDRB作业的结果并更新页面

获取BackgrounDRB作业的结果并更新页面
EN

Stack Overflow用户
提问于 2010-03-04 06:22:45
回答 1查看 142关注 0票数 1

嘿,伙计们,我正在尝试通过提交一个AJAX表单来运行一个进程:

代码语言:javascript
复制
<% form_remote_tag :url => {:controller => 'sender', :action => 'send'} do %>
<input id="messsageinput" type="text" size="44" name="command"/>
<%= submit_tag('Send', :id => 'button') %>
<% end %>

然后,'send‘操作创建一个新的BackgrounDRB作业,并执行一些render :update魔术:

代码语言:javascript
复制
MiddleMan.worker(:transmit_worker).async_transmit(:arg => {:linkes => linkes, :command => params[:command], :userid => current_user.id}, :job_key => current_user.id)
    render :update do |page|
        page.insert_html :bottom, 'ajaxholder', :partial => 'transmit'
        page[:cominput].clear
    end

我被卡住的部分是,我试图让页面以某种方式检查一个“getstatus”操作,该操作检查作业的进度并适当地呈现,然后在报告作业完成时停止检查。有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-03-11 06:58:51

好吧,我找到了一个解决方案。我不得不使用一些javascript来检查变量是否每隔2秒设置为真,以及它是否正在运行AJAX更新程序(有点像定期更新,但有一个变量开/关开关:

代码语言:javascript
复制
var updateInterval = 2000;
var timer;
var checkstatus = 0;
function inits()
{
<%= remote_function(:update => "feed",
      :url => { :controller => 'feed', :action => 'getfeed' }) %>;
timer = setInterval('checkel()', updateInterval);
}
function checkel(){
if(checkstatus=="1")
{
<%= remote_function(:url => { :controller => 'transmit', :action => 'getstatus' }) %>;
}
}
//-->

然后使用主体onload="inits()“启动脚本。传递命令以执行工作程序的控制器应将checkstatus的值指定为1:

代码语言:javascript
复制
render :update do |page|
page.assign 'checkstatus', 1
end

最后,在状态检查方法中,将其设置为在完成后重置该变量,以转到定期检查:

代码语言:javascript
复制
render :update do |page|
page.assign 'checkstatus', 0
page.replace_html 'successdiv', 'SUCCESS!'
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2375465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档