Javascript 如何使用jquery和rails在客户端站点上启动下载?

Javascript 如何使用jquery和rails在客户端站点上启动下载?,javascript,jquery,ruby-on-rails,ajax,download,Javascript,Jquery,Ruby On Rails,Ajax,Download,我的rails4应用程序的控制器中有以下代码: # resolve the soft links and archive all photos for the current download archived_photos = archive_current_download_photos(current_downloads_dir) respond_to do |format| if !File.exists?(archived_photos) format.json {

我的rails4应用程序的控制器中有以下代码:

# resolve the soft links and archive all photos for the current download
archived_photos = archive_current_download_photos(current_downloads_dir)

respond_to do |format|

  if !File.exists?(archived_photos)
    format.json { 
      render :nothing => true, :status => 500
    }
  else
    format.json {
      send_file(archived_photos, :disposition => "attachment", :filename => "photos.zip", :type => 'application/zip')
    }
  end

end
以及javascript中的处理:

   download photos request

   ajax_download = (valuesToSubmit, download_url, http_method) ->

   # AJAX
   $.ajax
    type: http_method
    url: download_url #sumbits it to the given url of the form
    data: valuesToSubmit # form
    dataType: "json"
    error: (error) ->
      console.log("DEBUG: error")
      return
    success: (data) ->

      console.log("DEBUG: success")
      return

   return false
当调用这个函数时,我没有得到下载,但是我看到数据被下载了


如何强制Chrome开始下载(不使用链接,而是在响应后立即开始下载)?

尝试设置
窗口。将位置设置为rails应用程序的强制下载url路径。


我想这应该是可行的,因为新页面不会被加载,强制下载会弹出文件。

您不能通过ajax调用强制下载文件。我认为Chrome支持它,但在IMO中,你无法获得可靠的跨浏览器解决方案

最好是使用
窗口。位置
或类似以下链接将用户发送到另一个页面:

<a href='download_url' target='_blank'>click</a>


您能否更详细地解释一下window.location-如何在ajax成功中实现这一点?如何操作?您的意思是:添加
window.location.href=
?在成功回调上,设置此值,
window.location=http://download_url
。它将重定向用户,但它不应该是明显的。