【发布时间】:2023-03-16 01:25:01
【问题描述】:
我正在创建一个 angularjs/laravel 应用程序,我需要实现一个功能来将某些数据导出为 PDF。 PDF 在后端使用laravel dompdf 生成,并作为 GET 请求的结果发送到 Angular。我还使用Angular File Saver 处理在请求成功回调时保存文件。到目前为止,代码在角度上看起来像这样
function (response) {
var data = new Blob([response.data], { type: 'application/pdf' });
console.log(data);
FileSaver.saveAs(data, 'balance.pdf');
}
这很好用。 PDF 被正确生成并保存。问题是,当我更新数据(任何 CRUD 操作 - 也正确执行)然后我调用导出函数再次保存 PDF 时,它会与旧数据一起保存。 console.log(data) 行显示 Blob 始终以相同的大小创建(我不知道为什么,因为我使用了 new 关键字,所以我在内存中创建了一个新对象,除非我我错了)。为了获得包含更新数据的 PDF,我必须手动刷新浏览器,这违背了 SPA 的目的,也让用户感到困惑。如果有人能提供任何关于为什么会发生这种情况的提示,我将不胜感激。提前致谢
【问题讨论】:
-
你检查了ajax的response.data还是后端生成的pdf是准确的?
-
@ARIFMAHMUDRANA pdf 是准确的。正如我所说,导出功能工作正常。结果我得到了一个正确的PDF,它被下载了。问题是,如果我更改数据并再次触发下载,PDF 没有得到更新。如果我手动刷新浏览器并触发下载,那么我会得到正确的数据
标签: javascript angularjs laravel blob filesaver.js