【发布时间】:2012-10-11 13:51:20
【问题描述】:
我试图在上传文件并解压缩文件时显示进度百分比。我正在使用 ruby-zip 解压缩文件。解压缩时,我增加计数器并将其存储在数据库中。我有一个像
这样的表格<% form_tag '/unzip', :multipart => true do %>
<%= file_field_tag "zipfile", :size => 12 %>
<button class="add_button" type="submit" value="Add"> Add </button>
<% end %>
<div class="progress">
</div>
在unzip 操作中,所有内容都可以解压缩并将值存储在数据库中。现在,我想每 2 秒左右更新一次.progress div。首先,我尝试在单击按钮时进行 ajax 调用并调用另一个获得此进度的方法。但我没有成功,因为下面这个简单的代码给了我错误。
<script>
$(".add_button").click(function() {
$.ajax({
url: "/get_progress",
method: "POST"
})
})
</script>
在get_progress方法中,我只是像
一样从数据库中取出值def get_progress
@progress = Progress.last.value
respond_to do |format|
format.js
end
end
为了简单的检查目的,我只是在get_progress.js.erb 中做console.log("rendered")。但这永远不会被调用,因为它之前有错误消息。但是,我检查了一下,ajax 调用正在向get_progress 发出请求。
但问题是,我在 jquery1.6.3 行号 7948 中的 xhr.send((s.hasContent && s.data) || null) 收到错误。我想我收到此错误是因为此页面在 ajax 调用期间被重定向到其他地方,并且还有另一个请求正在进行我打电话是因为很明显,当表单被提交时我有另一个动作被调用。
当我通过执行以下操作打印出 ajax 调用错误时:
error:function(xmlHTTPRequest, textStatus, errorThrown){
console.log(xmlHTTPRequest);
}
我得到了这个:
Object {readyState = 0 ,status = 0 ,statusText = "error" }
我认为我的问题类似于question。但是,这里提供的答案并没有解决我的问题。
有什么办法可以解决这个问题吗?我希望问题很清楚!
【问题讨论】:
标签: ruby-on-rails jquery ruby-1.8.7