在客户端创建的Blob不会使用新数据进行更新

时间:2017-03-08 14:28:28

标签: javascript angularjs laravel blob filesaver.js

我正在创建一个angularjs / laravel应用程序,我需要实现一个功能来将某些数据导出为PDF。 PDF使用laravel dompdf在后端生成,并作为GET请求的结果发送到angular。我还使用Angular File Saver来处理在请求的成功回调上保存文件。到目前为止,代码在angular

上看起来像这样
function (response) {
     var data = new Blob([response.data], { type: 'application/pdf' });
     console.log(data);
     FileSaver.saveAs(data, 'balance.pdf');
}

这很好用。生成并正确保存PDF。问题是,当我更新数据(任何CRUD操作 - 也正确执行)时,我调用导出功能再次保存PDF,它将与旧数据一起保存。 console.log(数据)行显示我创建的Blob总是具有相同的大小(我不知道为什么,因为我使用了new关键字,因此我创建了一个新对象在记忆中,除非我错了)。为了获得具有更新数据的PDF,我将不得不手动刷新浏览器,这种方式会破坏SPA的目的并使用户感到困惑。如果有人能提供任何暗示,为什么会发生这种情况,我将不胜感激。提前致谢

1 个答案:

答案 0 :(得分:0)

问题解决了,问题是在$ http请求的配置上设置了缓存属性。我以前设置它来减少服务器上的负载,以防多个连续请求发生。