![](/img/trans.png)
[英]Monitoring a server-side process on Rails application using AJAX XMLHttpRequest
[英]Updating server-side progress on Rails application
我想上传然后在Ruby on Rails应用程序中处理文件。 文件上传通常很短,但是服务器端处理可能需要一些时间(超过20秒),因此我想给用户一些指示-比无意义的“处理中...”屏幕更好。
我正在尝试在视图中使用以下代码
<%= periodically_call_remote(:url => {:action => 'progress_monitor', :controller => 'files'},
:frequency => '5',
:update => "setProgress('progressBar','5')"
) %>
:update参数的内容是我想每5秒运行一次的javascript
并且以下代码在文件控制器中
def progress_monitor
render :text => 'whatever'
end
最终,progress_monitor方法将以整数(已完成百分比)的形式返回当前进度,并将其传递到“ setProgress” JavaScript代码中(这将更新屏幕上的元素)
但是,我正在努力从服务器获取正确的响应,然后将其传递到JavaScript中。
任何人都可以提供帮助,还是我以错误的方式处理此问题?
对此有一个后续问题,我最初更新了此问题,但此更新有足够的不同,可以在此处提出新的问题。
periodically_call_remote()
更新div
。 它不会调用您的JavaScript函数。 我不是JavaScript专家,但是要解决您的问题,您应该执行自己的xmlhttp
调用。 如果我是你,我会使用原型的AJAX请求
http://www.prototypejs.org/api/ajax/request
并使用JavaScript的settimeout或setinterval进行定期轮询
http://www.elated.com/articles/javascript-timers-with-settimeout-and-setinterval/
希望这有助于cos,实际上我也遇到过相同的PRB =)
:update
选项应该只列出您要更新的div,而没有要评估的Javascript。
Rails的助手在这种情况下仍然非常有用,无需编写很多自定义JS。 如果您希望在返回时执行JS,一种简单的方法是呈现RJS模板。 如果你想用纯HTML做到这一点,只是呈现一个视图(或部分,或者直接从返回render
方法与进度条的HTML),并把进度条的DIV中:update
了的选项periodically_call_remote
方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.