JQuery Ajax调用PDF文件下载

我的问题类似于使用Ajax下载和打开pdf文件

但不完全相同,我想要一个JQuery ajax的原因是我的文件是从将从同一页面获取的数据动态生成的。

所以基本上我有一个需要发送到服务器的Json对象,它会动态生成一个文件并将其发送回浏览器。

我不想在我的Json对象stringyfied的锚点上使用查询字符串,因为我认为这将是一个潜在的威胁,因为查询字符串有字符限制(我在这里吗?)。

请告诉我如果我的工作流程正确或我可以使用不同的流程实现同样的事情。

您不应该使用AJAX来下载文件。 这不起作用。 据说你有两种选择:

  1. 动作链接和查询字符串参数或者如果必须在某些特定的javascript事件中进行下载,您还可以将window.location.href设置为应该生成PDF文件并将查询字符串参数传递给它的操作。

  2. 或者,如果您害怕将大量数据传递给将生成PDF下载的控制器操作,请使用带有method="POST"

    ,并在其中使用隐藏字段存储尽可能多的参数和数据你喜欢:

     @using (Html.BeginForm("download", "home")) { ... hidden fields containing values that need to be sent to the server  } 

您可以使用锚标记和php强制下载来执行pdf下载,而不是在页面中再进行一次ajax调用

 HTML Download pdf here PHP  

我正在检查文件大小,因为如果你从CDN cloudfront加载pdf,你不会得到文件的大小迫使文件在0kb下载,为了避免这种情况我正在检查这个条件

  if($fsize) {//checking if file size exist header("Content-length: $fsize"); } 

我也在努力解决这个问题,上面的代码对我有用,我希望它有所帮助

我有一个非常肯定的答案。 使用ajax请求到服务器时,无法下载PDF文件。 所以不应该使用html actionlink。 例如

 @Html.ActionLink("Convert Data into PDF", "PDFView", null, new { @class= "btn btn-info" }); 

上面的代码将生成一个链接按钮,您可以访问控制器的Action Method。 您也可以使用任何技术从控制器返回PDF文件,例如您可以使用FileResult类返回PDF文件。