
Alcune volte è necessario dover richiamare una pagina esterna ad un sito che permette il download di un file.
Senza dover aprire un popup esiste una bella libreria chiamata jQuery.fileDownload che permette la funzionalità richiesta con poche righe di codice come è possibile vedere dall’esempio:
$.fileDownload('/url/to/download.pdf', {
successCallback: function (url) {
alert("Download completato correttamente dall'url :" + url); },
failCallback: function (html, url) {
alert('Errore durante il download'); }
});
Purtroppo la libreria non permette di chiamare le pagine passando dei dati in JSON ad esempio. Questo è necessario quando ad esempio dobbiamo chiamare un WebMethod in una pagina .NET. La versione modificata invece permette le chiamate tramite parametri JSON. E’ semplicemente necessario chiamare la funzione usando un codice tipo: $.fileDownload("<% =ResolveUrl("~/WebMethods/Search.asmx/ExportTables")%>", {
httpMethod: "POST",
data: dataToSendExport,
contentType: "application/json"
}).fail(function () {
alert("Error during export");
});
Dove dataToSendExport è un array di oggetti costruito in questo modo:
dataToSendExport[0] = { "tableName": tableName }; dataToSendExport[1] = { "columns": replaceAll("'", "\'", JSON.stringify(columns)) };
Speriamo sia utile anche per voi!