I'm trying to export some tables generated with PHP from MySQL data. I'm trying to send the info via AJAX to a file with this code:
<?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'];
?>
The data comes from this function
function export_excel (id_table) {
var table = $("#" + id_table).html();
$.ajax({
t开发者_如何学Cype: 'POST',
url: 'toexcel.php',
data: 'table='+table
});
}
Through Firebug I can see that the table is echoed correctly but it doesn't start any download. Which could be the problem?
It is not possible to start a file download as a response to an Ajax request. You have to send the browser to fetch the resource like if you were navigating to a page.
If you need to use the POST method, I think the ideal way to do this would be:
Have a real
<form>
element into which you write the POST dataHave an invisible or small
iframe
. Give it a nameGive the form the iframe name as the
target
propertysubmit()
the form
if all headers are set correctly (You may have to add some more, like Content-disposition: attachment
), this should trigger a file download without affecting your current page.
If you can use GET
, a simple
location.href="toexcel.php?param1=value1¶m2=value2"
should do already.
精彩评论