jQuery在ajax成功函数中加载缓存文件

时间:2013-06-13 08:56:54

标签: jquery ajax

我正在尝试创建一个文件(来自TCPDF的pdf)并使用对php文件的Ajax请求将其加载到我页面上的embed对象中:

$.ajax({
  url: 'my_file_which_create_pdf_file.php',
  type: 'POST',
  success: function(){
      $('#pdf_placeholder embed').attr('src','output/my_file.pdf');
      },
  error: function (xhr, status, error) {
      if (xhr.status > 0) {
          alert('got error: ' + status);
          }
      }
  });

这是我的html代码:

<div id="pdf_placeholder">
    <embed id="pdf_document" src="" width="900">
</div>

这是有效的,但是......有时候(通常在纠正php文件中的错误之后)嵌入对象加载了pdf文件的兑现版本,而不是新生成的。

我删除文件,调用脚本,正确生成pdf文件,(通过ftp客户端检查),但嵌入对象加载旧版本的pdf文件。

在Ajax请求中添加async: false,不会改变任何内容,仍会显示兑现的pdf文件。

2 个答案:

答案 0 :(得分:1)

尝试使用简单的cachebusting技术,例如

$('#pdf_placeholder embed')
     .attr('src', 'output/my_file.pdf?v=' + Math.random());

这将始终使pdf

的缓存无效

答案 1 :(得分:0)

您是否尝试关闭ajax缓存,默认情况下为true

$.ajax({
url: 'my_file_which_create_pdf_file.php',
type: 'POST',
cache: false,
success: function(){
  $('#pdf_placeholder embed').attr('src','output/my_file.pdf');
  },
error: function (xhr, status, error) {
  if (xhr.status > 0) {
      alert('got error: ' + status);
      }
  }
});

jQuery.ajax