2009-03-23 15 views
5

È possibile utilizzare AJAX per scaricare un file csv generato da un'applicazione Web? Se è così, qualcuno ha qualche riferimento che potrei puntare?Download di CSV tramite AJAX

EDIT: Scusate Avrei detto che sto usando Ajax.Request di Prototype e ho guardato in strumento di risposta di Firebug e il CSV generato è la risposta, ho solo bisogno di farlo pop-up con l'opzione di salvare file dopo è stato generato da Ajax.Request

risposta

1

Alla luce dell'ultima modifica, per fare in modo che il file CSV attivi un download di file (anziché eseguire il rendering nel browser), non è necessario Ajax.

Invece, la soluzione è quella di avere il vostro sistema di back-end aggiungere questa intestazione HTTP quando viene richiesto il file CSV:

Content-disposition: attachment; filename=<your_filename.csv>; 

L'implementazione qui dipende dal sistema di back-end che si sta utilizzando. Se stai usando Rails (come suggerisce il tuo nome utente), ecco un inizio:

filename = 'your_filename.csv' 
headers['Content-Type'] = 'text/plain' 
headers['Content-Disposition'] = "attachment; filename=\"#{filename}\"" 
render :layout => false 
+0

Stiamo usando AJAX per nascondere un collegamento durante la generazione del CSV, il download di un file senza AJAX non è un problema ed era già stato fatto dall'applicazione, avevamo bisogno di nascondere un collegamento per impedire agli utenti di fare clic sul link più di una volta. – nitecoder

+0

Prova a usare $ ('# link'). Click (function() {$ (this) .hide()}); – SeanJA

+0

Ovviamente dovrebbe essere $ (this) .remove(); – SeanJA

0

Il download non è il problema; puoi scaricare tutti i dati che ti piacciono tramite XmlHttpRequest. La parte difficile è analizzarlo. Esistono diversi modi per analizzarlo, dalle regex all'indicizzazione delle stringhe.

0

È possibile utilizzare "AJAX" per scaricare qualsiasi cosa .. Alcune persone direbbero che non si dovrebbe chiamarlo AJAX in quel caso poiché tale termine è rigorosamente dedicato al download di XML. Ma in realtà è solo un meccanismo per ottenere dati nel client senza ricaricare una pagina. Se caricassi HTML, sarebbe chiamato AHAH, per CSV suppongo che lo chiameresti AHAC o AJAC? ..

3

Questa è una limitazione nota di richieste Ajax, dovrai usare JS come:

window.location='download-csv.rb'; 

Invece di usare una richiesta Ajax. Un altro modo è quello di cambiare la posizione di un Iframe nascosto, ma questo ha i propri pro/contro.

Non si otterrà mai una richiesta Ajax per visualizzare la finestra di dialogo "salva file", indipendentemente dalle intestazioni HTTP inviate.

Problemi correlati