ファイルをアップロードして解凍するときに、進行状況のパーセンテージを表示しようとしています。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
、値を解凍してデータベースに保存するすべてのものがあります。.progress div
さて、 2秒ごとに更新したいと思います。まず、ボタンがクリックされたときに 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
簡単なチェックのためにconsole.log("rendered")
、get_progress.js.erb
. ただし、その前にエラーメッセージがあるため、これは呼び出されません。しかし、私が確認したところ、ajax 呼び出しは にリクエストを行っていget_progress
ます。
しかし、問題は、xhr.send((s.hasContent && s.data) || null)
jquery1.6.3 行番号 7948 でエラーが発生していることです。このページは ajax 呼び出し中に別の場所にリダイレクトされ、呼び出し中に別の要求が行われているため、このエラーが発生していると思いますフォームが送信されたときに呼び出される別のアクションがあることは明らかです。
次のようにして、ajax呼び出しでエラーを出力すると:
error:function(xmlHTTPRequest, textStatus, errorThrown){
console.log(xmlHTTPRequest);
}
私はこれを取得しています:
Object {readyState = 0 ,status = 0 ,statusText = "error" }
私の問題はこの質問に似ていると思います。しかし、ここに提示された答えは私の問題を解決しませんでした。
この問題を解決する方法はありますか? 質問が明確であることを願っています!