在Rails2 Webapp中,我用javascript创建了一个表单来伪造下载文件的请求。在控制器中,我使用send_file呈现响应,以便下载文件。
查找要下载的文件有一个相当长的过程,同时我让客户端等待文件开始下载。因此,只要客户端点击下载按钮,我就会显示一个小提示"请求文件…"。
问题:我(在javascript方面)如何知道响应何时呈现(又名文件开始下载),以便我可以隐藏我正在显示的消息?我在任何地方都使用ajax,并且在调用的"before"部分抛出showMessage方法,在jquery ajax调用的"complete"部分抛出hideMessage。但由于我不能请求文件下载与ajax调用我必须通过一个表单,但我不知道如何实现,当我得到响应返回(或文件开始下载)
基本思想是将cookie与文件一起发送。一些javascript代码会定期检查cookie。当javascript获得cookie时,你就知道下载开始了。
你可以在这里(Java服务器代码)和这里(ASP.NET服务器代码)找到示例javascript代码。
在Rails中,cookie可以这样发送:cookies['download_token'] = params[:download_token]
send_data ...