【发布时间】:2010-09-06 11:05:52
【问题描述】:
更新:
通过以下方式解决:
append = append+'/output/'+output;
var url = '/producer/json/index/period/'+period+'/empties/'+empties+'/movies/'+movies+'/fields/'+fields+'/start/'+start+'/end/'+end+append+'';
$.ajax({
url: ''+url+'',
success: function(msg) {
location.href = ''+url+'';
}
});
你好,
我有一段 Javascript 可以 ping 一个 URL 并更新一个表格。我现在想输出一个 CSV 文件。
所以我的 PHP 端完成了,如果我查看 ajax pings 的 URL,文件被创建并正确输出。
但是,如何让 jQuery/Javascript 将其检索到的内容输出为下载内容?
PHP:
public function outputCSV($main, $fields) {
header('Cache-Control: no-cache, must-revalidate');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Content-type: application/excel');
header('Content-Disposition: attachment; filename="ProducerAreaOutput-'.date('r').'.csv"');
$array = array();//make a new array, put the fields first
$array[0] = $fields;
foreach ($main as $item) {//loop existing rows
$array[] = $item;
}
$csv = self::array_to_csv($array, false);
echo $csv;
exit;
}
Javascript
function byMonth(output) {
var undefined;
oTable = $('#stats').dataTable();
oTable.fnClearTable();
var start = $('#year-start').val()+'-'+$('#month-start').val()+'-1';
var end = $('#year-end').val()+'-'+$('#month-end').val()+'-30';
var empties = $('#empties').val();
var period = $('#period').val();
var movies = $('#movies').val();
var site_id = $('#site_id').val();
var studio_id = $('#studio_id').val();
var movie_id = $('#movie_id').val();
var append = '';
append = (site_id > 0) ? append+'/site_id/'+site_id : append;
append = (studio_id > 0) ? append+'/studio_id/'+studio_id : append;
append = (movie_id > 0) ? append+'/movie_id/'+movie_id : append;
if (output === 'CSV') {
append = append+'/output/'+output;
$.ajax({ url: '/producer/json/index/period/'+period+'/empties/'+empties+'/movies/'+movies+'/fields/'+fields+'/start/'+start+'/end/'+end+append+''});
}
想法?
【问题讨论】:
-
根本不需要进行 ajax 调用。只需将
location.href设置为网址即可。 -
答:因为它打乱了人们通常阅读文本的顺序。问:为什么置顶是一件坏事? — 另外,如果您已经解决了这个问题,请用您的解决方案回答您自己的问题。
标签: javascript jquery csv