我想做什么: 1,使用Javascript ajax POST数组到PHP; 2,使用POST数组用PHP搜索mysql的结果; 3,用csv格式返回搜索结果,这样用户就可以保存文件了。 我已经完成了第1部分和第2部分,但我无法返回csv文件 我使用ajax将数组数据发送到PHP,如下所示:
$(document).ready(function(){
$('#export').click(function(){
var list = JSON.stringify(count);
$.ajax({
type: "POST",
url: "exportDataColoniesNumber.php",
data: {'data': list},
success: function(response){
alert(response);
}
});
});
});
并处理exportDataColoniesNumber.php中的数据,该页面将返回一个csv文件:
<?php
$data = json_decode($_POST['data']);
$last_key = end(array_keys($data));
$sql = "SELECT * FROM coloniesNumber WHERE ";
foreach ($data as $key => $value) {
$sql .= "num='" . $value . ($key == $last_key ? "';" : "' OR ");
}
$con = DatabaseConnection::get()->connect();
mysql_query('set names utf8');
mysql_select_db('fish') or die('Could not select database');
$result = mysql_query($sql);
$lines = '';
while($row = mysql_fetch_array($result)) {
$line = '';
for($i = 0; $i < $fields; $i++) {
$line .= $row[$i] . ",";
}
$lines .= trim($line) . "\n";
}
header("Content-type:application/vnd.ms-excel");
header("Content-disposition:csv".date("Y-m-d").".csv");
header("Content-disposition:filename=test.csv");
print "$lines";
?>
警报(响应)返回csv数据:
8,4008,11.267,fat,1,,
9,4009,12.022,thin,1,,
10,4010,11.356,thin,1,,
11,4011,10.873,thin,1,,
12,4012,11.017,thin,1,,
13,4013,11.301,thin,1,,
如何返回csv文件?
答案 0 :(得分:1)
我个人创建了一个导出到csv的PHP处理程序,确保你有这些标题
header("Content-Disposition: attachment; filename=report.csv");
header("Content-Type: text/csv");
然后只是回显你的数据,csv格式化或使用许多免费的csv类之一(只需调用一个带有数组作为参数的函数)
然后将您的表单(假设您有一个)发布到1x1像素的隐藏iframe并使用css设置屏幕外
iframe { position: absolute; left: -9999px; }
您应该全部设置,并且弹出导出 - 但是,请确保文件不大或您的脚本需要花费大量时间才能完成 - 在此之前,下载将不会显示。