用PHP + Jquery导出到XLS的问题


Problems exporting to XLS with PHP + Jquery

我试图从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&param2=value2"