我试图从MySQL数据导出一些PHP生成的表。我试图通过AJAX发送信息到一个文件与此代码:
<?php
header("Content-type: application/vnd.ms-excel; name='excel'");
header("Content-Disposition: filename=excel.xls");
header("Pragma: no-cache");
header("Expires: 0");
echo $_POST['table'];
?>
数据来自这个函数
function export_excel (id_table) {
var table = $("#" + id_table).html();
$.ajax({
type: 'POST',
url: 'toexcel.php',
data: 'table='+table
});
}
通过Firebug,我可以看到表是正确的,但它没有开始任何下载。问题出在哪里?
不能将文件下载作为对Ajax请求的响应来启动。你必须发送浏览器来获取资源,就像你要导航到一个页面一样。
如果您需要使用POST方法,我认为理想的方法是:
-
有一个真正的
<form>
元素,你写入POST数据 -
iframe
不可见或较小。给它起个名字 -
给表单iframe名作为
target
属性 -
submit()
形式
如果所有标题设置正确(您可能需要添加一些,如Content-disposition: attachment
),这应该触发文件下载,而不会影响当前页面。
如果你可以使用GET
,一个简单的
location.href="toexcel.php?param1=value1¶m2=value2"