My problem is that I send to client first PDF to download, then I need to check, if some data exists in my database, then depending on that check I need to show question that if user want to download another PDF, that I generates.
My Code:
//Here I just make dialog for question
$('#printDWInfo').dialog({
resizable: false,
modal: true,
autoOpen: false
});
//Here is my problem :)
$('#generujWydruk').click(function (event) {
event.preventDefault();
$('#printForm').submit(); // <-- sending first request and client get first PFD file
$.post('<%: ResolveUrl("~/Reports/KPiRReportDWCheck") %>', <-- check for another data
$("#printForm").serialize(),
function(data) {
if (data.length > 0) {
$("#printDWInfo").dialog( "option", "buttons", [
{
text: "Tak",
click: function () {
$.ajax({ type: "POST",
url: '<%= Url.Action("PrintDWList","Reports")%>',
datatype: "json",
traditional: true,
data:{'ids': data },
success: function (data2) {
//I don't know what to do here
}
});
$(this).dialog("close");
}
}, {
text: "Nie",
click: function () {
$(this).dialog("close");
}
}
]);
$('#printDWInfo').dialog("open");
}
}
);
If client click on button “Tak” in dialog, I use ajax request, because I can pass to controler array of int, that is returned by $.post('<%: ResolveUrl("~/Reports/KPiRReportDWCheck") %>'.
In success function of my ajax request FireBug show me that data2 is binary data of my PDF file, what I need to do to allow client to download this PDF file?
You should not use AJAX to download files. The problem is that you are fetching the pdf bytes in a javascript variable in the success callback of your AJAX call but there’s nothing you could do with it. You cannot prompt the user to save it and of course you cannot save it to the client since javascript doesn’t have the necessary privileges.
So you should use a normal request:
Notice that this will send a GET request to the
PrintDWListaction passing the ids query string parameter so make sure this action is accessible on GET. Now if the controller action uses the Content-Disposition header to attachment it will offer the user to download the file: