내가 원하는 작업 : 1, Javascript ajax POST 배열을 PHP에 사용; 2, POST 배열을 사용하여 PHP로 mysql의 결과를 검색한다. 3, csv 형식으로 검색 결과를 반환하므로 사용자가 파일을 저장할 수 있습니다. 나는 파트 1과 파트 2를 달성했지만, 나는이 같은 PHP로 배열 데이터를 게시하는 아약스를 사용 csv 파일이 을 반환받을 수 없습니다 exportDataColoniesNumber.php의 데이터를javascript ajax 데이터를 csv로 내보내는 방법은 무엇입니까?
$(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);
}
});
});
});
을 그리고 처리하고, 페이지는 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 파일을 반환받을 수 있나요?
아약스를 도려 내고 대신 숨겨진 iframe에 제출하십시오. – Steve
가장 쉬운 방법은 아약스를 사용하지 않고 매개 변수가있는 URL로 리디렉션하는 것입니다. – Jurik
이것은 이미 답변되었습니다. 보십시오 http://stackoverflow.com/questions/14682556/why-threre-is-no-way-to-download-file-using-ajax-request – wizhippo