Ho il seguente codice per scaricare un file .csv:utilizzando jQuery e iFrame per scaricare un programma
$.ajax({
url: urlString,
contentType: "application/json; charset=utf-8",
dataType: "json",
cache: false,
success: function (data) {
if (data) {
var iframe = $("<iframe/>").attr({
src: data,
style: "visibility:hidden;display:none"
}).appendTo(buttonToDownloadFile);
} else {
alert('Something went wrong');
}
}
});
L'urlString punta a un servizio RESTful che genera il file .csv e restituisce il percorso del file che è assegnato all'attributo src per l'iFrame. Funziona con qualsiasi file .csv ma ho problemi con i file .xml. Quando uso lo stesso codice ma cambio contentType in "text/xml" e lo uso per scaricare file .xml, questo non funziona.
Posso usare lo stesso approccio qui per i file .xml?
UPDATE:
Grazie a Ben per avermi indirizzato verso la giusta direzione. A quanto pare non ho bisogno della chiamata ajax. Invece, posso semplicemente usare l'iFrame e il suo attributo url per chiamare il servizio web, che genererà il contenuto, aggiungere l'intestazione (Content-Disposition
) e restituire lo stream.
Temo non capisco il lavoro -avresti suggerito. Il mio server è .NET (WCF). Stai dicendo che dovrei aggiungere le intestazioni dal lato server? – notlkk
Sì. Se non controlli l'API RESTful, allora non è possibile impostare le intestazioni usando solo HTML/JS. Quindi, quello che fai è creare uno script sul tuo server .NET che possa ricevere l'URL remoto come argomento, andare a prendere il file remoto, re-impacchettarlo con nuove intestazioni e poi servirlo come allegato. –
Vedo. Ho bisogno di tutte e 4 le intestazioni come hai sottolineato? E quale tipo di contenuto dovrei usare nel mio javascript? – notlkk