2013-06-13 82 views
0

我想创建一个文件(从TCPDF PDF),并使用Ajax请求的PHP文件中的嵌入对象时,它加载我的网页上:jQuery的负载

$.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> 

这是工作,但...有时候嵌入对象加载PDF文件的兑现版本,而不是用新生成的(通常纠正PHP文件错误后)。

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

在Ajax请求中添加async: false,没有任何变化,仍旧兑现PDF文件显示。

回答

1

尝试用一个简单的缓存无效化技术,像

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

这将始终缓存失效的PDF

+0

谢谢,这是有效的!我正在使用这种加载pdf的方式,因为我仍然无法使TCPDF直接执行此操作,但这是另一回事。 – pl71

0

你试过关掉ajax缓存默认情况下为真

$.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

+0

这就是我要建议的,但问题不是ajax调用,而是成功函数内的'src'设置没有触发新的请求。 –