Handling PDF downloads via Ajax: A Solution
When an Ajax call attempts to download a PDF file generated by an action class, it may encounter an error if the stream cannot be delivered to the browser. To resolve this issue, a different approach is required.
In the provided action class, the PDF file is generated and its stream is set up for download with the correct headers. However, the Ajax call needs to be handled differently to facilitate the transfer.
Here's a solution that has been successfully implemented:
<code class="javascript">$.ajax({ url: '<URL_TO_FILE>', success: function(data) { var blob=new Blob([data]); var link=document.createElement('a'); link.href=window.URL.createObjectURL(blob); link.download="<FILENAME_TO_SAVE_WITH_EXTENSION>"; link.click(); } });</code>
In this code, the Ajax call retrieves the PDF file stream as a data variable. It then creates a Blob object from the data. A new link element is created and its href is set to the Blob's URL. The download attribute is set to the desired filename with the appropriate extension. Finally, the link is clicked to initiate the download process.
This approach has proven effective in delivering PDF files generated by the action class to the browser for download, allowing for seamless integration between the server and the client.
The above is the detailed content of How Can I Download a PDF Generated by an Action Class via Ajax?. For more information, please follow other related articles on the PHP Chinese website!