Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript RubyonRails:通过jquery/ajax请求发送_文件_Javascript_Ruby On Rails_Ajax_Sendfile - Fatal编程技术网

Javascript RubyonRails:通过jquery/ajax请求发送_文件

Javascript RubyonRails:通过jquery/ajax请求发送_文件,javascript,ruby-on-rails,ajax,sendfile,Javascript,Ruby On Rails,Ajax,Sendfile,通过ajax从rails服务器下载文件时遇到问题: 我的下载控制器中有一个show action,如果将参数传递给show action,它将调用send_file 然后我有一个页面,其中有一个select下拉列表,显示服务器上的文件列表。当我选择一个值并单击下载按钮时,它发出一个ajax请求,该请求发送一个GET请求,该请求由我的下载控制器处理 查看我的服务器日志,似乎ajax请求正在工作,它说: Started GET "/download?file=test.txt" for 127.0.

通过ajax从rails服务器下载文件时遇到问题:

我的下载控制器中有一个show action,如果将参数传递给show action,它将调用
send_file

然后我有一个页面,其中有一个
select
下拉列表,显示服务器上的文件列表。当我选择一个值并单击下载按钮时,它发出一个ajax请求,该请求发送一个GET请求,该请求由我的下载控制器处理

查看我的服务器日志,似乎ajax请求正在工作,它说:

Started GET "/download?file=test.txt" for 127.0.0.1 at 2012-07-19 15:13:41 -0700
Processing by DownloadsController#show as HTML
  Parameters: {"file"=>"test.txt"}
Sent file /Users/Admin/Documents/rails_projects/test/public/data/test.txt (0.1ms)
Completed 200 OK in 0ms (ActiveRecord: 0.0ms)
但是,实际上没有下载任何内容。当我实际手动访问
show
页面时,文件实际上已下载。我做错了什么

--

Javascript

 <script type="text/javascript">
    $(function() {
      $('#button').click(function() {
        var s = $("select#dropdown_select").val();
               $.ajax({
                      type: 'GET',
                      url: 'http://localhost:3000/download?file=' + s,
                      dataType: "HTML"
                      });
      })
    });
  </script>

我也有同样的问题,但我没有使用JS点击功能,而是使用了rails
link
tag

最初,在我的视图中我有一个
链接,指向带有
remote:true的
标记(它生成ajax调用)

该链接旨在生成PDF文件。PDF已生成(包含对虾和thinreports)并发送,但下载对话框未弹出

因此,我删除了
remote:true
,并添加了一个
目标:''u self'
,结果是这样的(我使用的是haml)

而且效果很好


为什么不尝试使用Rail的
链接
标记重写代码?

您不能使用ajax下载文件,您应该允许用户提交表单(包括您提到的select),并允许浏览器隐藏请求和响应
def show

    filename = params[:dl]

    if(filename.nil? == false)

    path = Rails.root.join('public/data', filename)
    send_file path, :x_sendfile => true

    end
end
!= link_to image_tag( 'print.png' ) + (I18n.t :buttons)[:comments][:print],
    customer_comment_path(@address_book),
    { target: '_self' }