【发布时间】:2014-05-24 07:26:01
【问题描述】:
我想做什么: 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 文件返回?
【问题讨论】:
-
放弃 ajax,改为提交到隐藏的 iframe。
-
最简单的方法是不使用 ajax 而只是重定向到带有参数的 url。
-
这已经被回答了。看看stackoverflow.com/questions/14682556/…
-
有没有机会code.google.com/p/jquery-csv 提供帮助?
-
我也无法通过 ajax 导出数据。我该怎么做?
标签: javascript php ajax csv