【发布时间】:2012-09-27 04:04:32
【问题描述】:
我正在尝试导出包含一些数据的 csv 文件。在从视图表(jqGrid)中选择一些行并将其导出为 csv 格式后,我正在进行 ajax 调用。问题是在成功调用 ajax 后,过滤后的数据显示为警告消息而不是下载选项?有什么想法吗??
查看代码:
function x() {
var obj = jQuery("input:checked").map(function() { return jQuery(this).parents('tr').attr('id'); });
var arr = jQuery.makeArray(obj);
var data = arr.join(',');
$.ajax({
url : '<%= url_for :action => "export_to_csv" %>',
type : 'POST',
data : {data:data},
dataType : 'json',
success : function(response) {
alert("Details saved successfully!!!");
},
error : function (request, status, error) {
alert(request.responseText);
}
});
}
控制器代码:
def export_to_csv
require 'fastercsv'
data = params['data'].split(',')
@gos = GoSe.find(:all, :conditions => [ "id IN (?)", data])
csv = FasterCSV.generate do |line|
cols = ["ID","Details","PartnerCode","Sece","Date","Partner","Person","TaxName","TaxID"]
line << cols
@gos.each do |entry|
line << [entry.id, entry.description, entry.code, entry.ellipsis, entry.oDate, entry.name, entry.people_name, entry.tax_name, entry.tax_id ]
end
end
send_data(csv,
:type => 'text/csv; charset=iso-8859-1; header=present',
:disposition => "attachment; filename=go_data_#{Time.now.strftime('%d-%m-%y--%H-%M')}.csv")
end
【问题讨论】:
-
javascript 无法访问文件系统(除非您使用不受广泛支持的新文件编写器 api),因此您永远不会收到使用这样的代码下载文件的提示 -您需要发出正常的非 ajax 请求。
标签: javascript jquery ruby-on-rails ruby ajax