ajax提交json数据返回文件流下载excell

ajax异步无法返回下载文件
可以通过添加from表单隐藏域的方式实现。
另外也想过直接js调用excell插件来生成文件学艺不精放弃了。
Require:
$(".feedback.button").click(function(){
    var form = $("<form>");
        form.attr('style', 'display:none');
        form.attr('target', '');
        form.attr('method', 'post');
        form.attr('action', '<%= download_feedback_crm_products_path%>');

        var input1 = $('<input>');
        input1.attr('type', 'hidden');
        input1.attr('name', 'item');
        input1.attr('value', "<%= CGI.escape(@result[:data].to_json) %>");

        $('body').append(form);
        form.append(input1);
        
        form.submit();
        form.remove();
});


Action:
 # 下载sku 反馈信息
  def download_feedback
    result = CGI.unescape(params[:item]) 
    data = JSON.parse(result)
    file = Spreadsheet::Workbook.new
      list = file.create_worksheet :name => "test"
      list.row(0).concat ["CAS No.", "Product Name",  "Assay/Purity",  "In Stock (yes/no)", "Note","Result"]
      data.each_with_index { |report, i|
        list.row(i+1).concat report.values
      }
      xls_report = StringIO.new 
      file.write xls_report 
      send_data xls_report.string, :type => 'text/xls', :filename => "wait_shipments.xls"
  end




猜你喜欢

转载自schooltop.iteye.com/blog/2377512