我正在使用以下代码,
<script type="text/javascript">
function fireDownload(){
var path= '<?php echo URL; ?>/downloadmyfile';
$.post(path,function(data){
alert(data);
});
}
</script>
我的控制器中有downloadfileAction
public function downloadmyfileAction()
{
$this->_helper->viewRenderer->setNoRender();
$this->_helper->getHelper('layout')->disableLayout();
..... ..... ....
$this->view->List=$myData;
///CREATE CSV
$myFile = "ORDER_" . time() . ".csv";
header("Content-Disposition: attachment; filename=\"$myFile\"");
header("Content-Type: application/vnd.ms-excel; charset=UTF-16LE");
$out = fopen("php://output", 'w');
$csvData = array('SlNo', 'Test1','Test2','Test3','Test4','Test5');
$o = fputcsv($out, $csvData, ',', '"');
$count = 1;
foreach($myData as $key => $value)
{
$csvData = array();
$csvData = array($count,$value['Test1'],$value['Test2'],$value['Test3'],$value['Test4'],$value['Test5']);
$o = fputcsv($out, $csvData, ',', '"');
$count++;
}
fclose($fh);
// DOWNLOAD CSV
echo $out;
die();
}
当我启动函数downloadmyfile时,它会生成未知语言的警报,语言似乎是日本。我无法使用jquery post
方法下载文件。请帮助我
答案 0 :(得分:0)
你的下载应该是这样的:
$this->_helper->layout->disableLayout();
$this->_helper->viewRenderer->setNoRender();
$this->getResponse()
->setHeader('Content-Type', $contentType)
->setHeader('Content-Disposition','attachment; filename="'.$filename . '";')
->setBody($data);
其中$ data是您文件的内容,在您的情况下是csv数据。 $ contentType将是一些内容类型,在您的情况下为“application / vnd.ms-excel; charset = UTF-16LE”。最后$ filename将是您开始下载时出现的文件名,在您的情况下将是:“ORDER _”。time()。“。csv”。不要使用die()而不要使用echo。当您呼叫控制器时,下载会自动开始。
希望有所帮助。 :)
答案 1 :(得分:0)
终于通过使用
找到了function firedownload(){
document.fname.action='<?php echo ADMIN_URL; ?>/downloadmyfile';
document.fname.submit();
}
还更改了downloadmyfileAction()
// DOWNLOAD CSV
echo $out;
exit; //die();
但我仍然无法在jquery post
方法中找到解决方案,因为时间我转移到另一个解决方案