2017-03-08 45 views
0

我正在创建一个angularjs/laravel应用程序,我需要实现一个功能将某些数据导出为PDF。 PDF使用laravel dompdf在后端生成,并作为GET请求的结果发送到角度。我也使用Angular File Saver来处理请求成功回调中的文件。到目前为止代码看起来像这样的角度在客户端创建的Blob没有得到更新的新数据

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的目的,也使用户感到困惑。如果任何人都可以提供任何暗示,为什么会发生这种情况,我将不胜感激。在此先感谢

+0

您是否检查过ajax的response.data或者后端生成的pdf是否准确? –

+0

@ARIFMAHMUDRANA pdf是准确的。正如我所说的,导出功能正常工作。我得到一个正确的PDF作为结果下载。问题是,如果我更改数据并再次触发下载,PDF不会更新。如果我手动刷新浏览器并触发下载,那么我会得到正确的数据 – hrivera

回答

0

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