因此,我已经对我的[email protected]
做了一个小AJAX请求。CSV导出laravel 5控制器
现在当我在我的成功方法中的数据为console.log()
时,ajax响应显示正确的数据。但是我的CSV没有下载。所以我拥有所有正确的信息,并且本质上已经创建了csv。
我认为这可能与设置标题可能?
public function export()
{
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=file.csv");
header("Pragma: no-cache");
header("Expires: 0");
$reviews = Reviews::getReviewExport($this->hw->healthwatchID)->get();
$columns = array('ReviewID', 'Provider', 'Title', 'Review', 'Location', 'Created', 'Anonymous', 'Escalate', 'Rating', 'Name');
$file = fopen('php://output', 'w');
fputcsv($file, $columns);
foreach($reviews as $review) {
fputcsv($file, array($review->reviewID,$review->provider,$review->title,$review->review,$review->location,$review->review_created,$review->anon,$review->escalate,$review->rating,$review->name));
}
exit();
}
有什么我做错了这里,还是Laravel有东西,以应付呢?
AFAIK这是行不通的,因为你调用使用Ajax这个功能和Ajax可能不支持下载头。是否有任何具体要求使用Ajax?我想你可以直接调用该脚本并设置适当的标题,以便它应该在同一页面上并且CSV将会生成。 – Yogesh
我只是喜欢使用ajax,因为它不会使页面重新加载。看起来更好 –