2009-03-23 10 views
5

Pouvez-vous utiliser AJAX pour télécharger un fichier csv généré à partir d'une application Web? Si oui, quelqu'un a-t-il un type de référence vers lequel je pourrais être dirigé?Téléchargement de CSV via AJAX

EDIT: Désolé j'aurais dû mentionner que j'utilise Ajax.Request de Prototype et j'ai regardé dans l'outil de réponse de firebug et le CSV généré est la réponse, je dois juste l'obtenir pour apparaître avec l'option de dossier de sauvegarde après a été généré par le Ajax.Request

Répondre

1

À la lumière de votre dernière édition, pour que votre fichier CSV déclenche un téléchargement de fichier (au lieu de le rendre dans le navigateur), vous n'avez pas besoin d'Ajax.

Au lieu de cela, la solution est d'avoir votre système back-end ajouter cet en-tête HTTP lorsque le fichier CSV est demandé:

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

Votre mise en œuvre dépend ici du système back-end que vous utilisez. Si vous utilisez Rails (comme votre nom d'utilisateur indique), voici un début:

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

Nous utilisons AJAX pour cacher un lien lors de la génération du CSV, télécharger un fichier sans AJAX n'est pas un problème et était déjà fait par l'application, nous avions besoin de cacher un lien pour empêcher les utilisateurs de cliquer sur le lien une fois que. – nitecoder

+0

Essayez d'utiliser $ ('# link'). Click (function() {$ (this) .hide()}); – SeanJA

+0

Évidemment, cela aurait dû être $ (this) .remove(); – SeanJA

0

Le téléchargement est pas le problème; vous pouvez télécharger toutes les données que vous aimez via XmlHttpRequest. La partie difficile est l'analyse. Il existe plusieurs façons de l'analyser, depuis les expressions rationnelles jusqu'à l'indexation de chaînes.

0

Vous pouvez utiliser "AJAX" pour télécharger quoi que ce soit .. Certains diraient que vous ne devriez pas l'appeler AJAX dans ce cas puisque ce terme est rigoureusement consacré au téléchargement XML. Mais en réalité, c'est juste un mécanisme pour obtenir des données dans le client sans recharger une page. Si vous chargiez du HTML, ça s'appellerait AHAH, pour CSV je suppose que vous l'appelez AHAC ou AJAC? ..

3

Ceci est une limitation connue des requêtes Ajax, vous devez utiliser JS comme:

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

Au lieu d'utiliser une requête Ajax. Une autre façon est de changer l'emplacement d'un Iframe caché, mais cela a ses propres pro/con.

Vous n'obtiendrez jamais une requête Ajax pour afficher la boîte de dialogue 'enregistrement de fichier', quels que soient les en-têtes HTTP que vous envoyez.

Questions connexes