处理ajax成功的PDF结果数据

时间:2012-02-15 10:44:33

标签: javascript ajax pdf-generation

我想知道是否有人可以为下面的工作建议一种替代方法。

我有一个Web应用程序,它为PDF发出http请求。 PDF可能需要超过服务器端创建请求的默认超时,所以为了更好地控制它,我使用了ajax,之前只使用了window.open。

但是,由于PDF的准备方式,创建它的请求也会返回它。我无法找到处理返回的二进制PDF数据的方法,所以我只是简单地在浏览器缓存上重新存储数据。然后再次请求对同一个网址,但使用window.open。

此代码如下..

function loadPdf(url, timeout){
   $.ajax({
     url: url,
     success: function(data){
       window.open(url);
     },
     error: function(error, status){
       window.alert("Problem retrieving PDF.\nThe error status is: " + status);
     },
     timeout: timeout,
     dataType: "application/pdf"   
  });
}

我想要做的是以要求用户打开/保存PDF的方式处理成功数据。我真的不喜欢以这种方式使用window.open,特别是像这样的重复调用。

2 个答案:

答案 0 :(得分:2)

  

我真正想做的是以某种方式处理成功数据   要求用户打开/保存PDF

那是不可能的。您不应该使用AJAX来下载文件。您无法对在success回调中检索到的字节数组执行任何有用的操作。您无法直接将其保存在客户端计算机上(出于显而易见的原因),也无法使用“保存”对话框提示用户。

您也不需要使用window.open。您只需提供指向该文件的链接:

<a href="/somescript">download pdf</a>

然后在服务器上指定:Content-Disposition: attachment; filename="test.pdf"自定义HTTP标头以显示保存对话框,允许用户在其计算机上指定存储文件的位置。

答案 1 :(得分:0)

jquery.fileDownload插件可以满足您的需求吗?