要实现 Excel 导出功能,你需要在前端发送请求后,后端返回一个 Excel 文件的响应,然后前端处理这个文件下载。以下是完整的实现方案:
前端代码需要修改为处理文件下载的方式:
这种方式比使用 $.post 更适合文件下载,因为:
文件下载需要浏览器处理响应为文件,而不是 JSON 等数据格式
form 提交可以自然地处理文件下载的响应头
后端需要设置正确的响应头,以 PHP 为例:
// 导出Excel按钮点击事件
$("#export").click(function(){
// 创建表单或直接跳转来触发文件下载
var form = $('<form></form>');
form.attr('action', "{:url('signin/excel')}");
form.attr('method', 'post');
// 如果需要传递参数,可以添加隐藏字段
form.append('<input type="hidden" name="param1" value="value1">');
// 将表单添加到页面并提交
$('body').append(form);
form.submit();
// 提交后移除表单
form.remove();
});
这种实现方式兼容所有浏览器,能正确触发文件下载对话框,让用户选择保存位置。如果需要传递参数,只需在表单中添加相应的隐藏字段即可。