发送请求下载文件,在Javascript中捕获响应

时间:2012-12-22 09:01:39

标签: javascript ruby-on-rails forms jquery download

在Rails2 Webapp中,我在javascript中创建一个表单来伪造下载文件的请求。在控制器中,我使用send_file呈现响应,以便下载文件。

有一个相当长的过程正在查找要下载的文件,同时我让客户端等待文件开始下载。出于这个原因,只要客户点击下载按钮,我就会显示一个小的按摩,说“请求文件......”。

问题: 我怎么能(在javascript方面)知道什么时候呈现响应(也就是文件开始下载)所以我可以隐藏我正在显示的消息?我在任何地方都使用ajax,并且在调用的“before”部分中抛出showMessage方法,在jquery ajax调用的“complete”部分中抛出hideMessage。但是因为我不能通过ajax调用请求下载文件,所以我必须通过一个表单来执行它,但是当我得到repsonse(或文件开始下载)时我不知道如何实现

1 个答案:

答案 0 :(得分:0)

基本思路是将cookie与文件一起发送。一些javascript代码会定期检查cookie。当javascript获取cookie时,您知道下载开始了。

您可以找到示例javascript代码here(Java中的服务器代码)和here(ASP.NET中的服务器代码)。

在Rails中,cookie可以像这样发送:

cookies['download_token'] = params[:download_token]
send_data ...