如何将javascript ajax数据导出到csv?

时间:2014-04-10 14:12:51

标签: javascript php ajax csv

我想做什么: 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文件?

1 个答案:

答案 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; }

您应该全部设置,并且弹出导出 - 但是,请确保文件不大或您的脚本需要花费大量时间才能完成 - 在此之前,下载将不会显示。