【问题标题】:Send request to download file, catch response in Javascript发送请求以下载文件,在 Javascript 中捕获响应
【发布时间】:2012-12-09 16:54:28
【问题描述】:

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

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

问题: 我如何(在 javascript 端)知道响应何时呈现(也就是文件开始下载),以便我可以隐藏我正在显示的消息?我到处使用 ajax,我在调用的“之前”部分中抛出 showMessage 方法,在 jquery ajax 调用的“完整”部分中抛出 hideMessage。但是由于我无法通过 ajax 调用请求下载文件,所以我必须通过表单来完成,但我不知道何时获得回复(或文件开始下载)

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-06
      • 1970-01-01
      • 2012-05-11
      • 1970-01-01
      • 1970-01-01
      • 2017-05-25
      • 1970-01-01
      相关资源
      最近更新 更多