Загрузка CSV через AJAX - PullRequest
       14

Загрузка CSV через AJAX

5 голосов
/ 23 марта 2009

Можно ли использовать AJAX для загрузки сгенерированного CSV-файла из веб-приложения? Если да, есть ли у кого-нибудь ссылка, на которую я мог бы указать?

РЕДАКТИРОВАТЬ: Извините, я должен был упомянуть, что я использую Ajax.Request Prototype, и я посмотрел в инструменте ответа firebug и сгенерированный CSV является ответом, мне просто нужно, чтобы он всплыл с опцией сохранения файла после того, как был сгенерирован по Ajax.Request

Ответы [ 4 ]

4 голосов
/ 14 мая 2009

Это известное ограничение запросов Ajax, вам нужно использовать JS, например:

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

Вместо использования Ajax-запроса. Другой способ - изменить местоположение скрытого Ифрама, но у него есть свои плюсы / минусы.

Вы никогда не получите Ajax-запрос для отображения диалогового окна «сохранение файла», независимо от того, какие HTTP-заголовки вы отправляете.

1 голос
/ 23 марта 2009

В свете вашего последнего редактирования, чтобы ваш CSV-файл вызывал загрузку файла (вместо рендеринга в браузере), Ajax не нужен.

Вместо этого решение состоит в том, чтобы ваша внутренняя система добавила этот HTTP-заголовок при запросе CSV-файла:

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

Ваша реализация здесь зависит от используемой серверной системы. Если вы используете Rails (как подсказывает ваше имя пользователя), вот начало:

filename = 'your_filename.csv'
headers['Content-Type'] = 'text/plain'
headers['Content-Disposition'] = "attachment; filename=\"#{filename}\""
render :layout => false
0 голосов
/ 23 марта 2009

Вы можете использовать «AJAX» для загрузки чего угодно .. Некоторые люди скажут, что в этом случае не следует называть его AJAX, поскольку этот термин строго посвящен загрузке XML. Но на самом деле это просто механизм для передачи данных в клиент без перезагрузки страницы. Если бы вы загружали HTML, он назывался бы AHAH, для CSV, я думаю, вы бы назвали его AHAC или AJAC? ..

0 голосов
/ 23 марта 2009

Скачать это не проблема; Вы можете загрузить любые данные, которые вам нравятся, через XmlHttpRequest. Трудная часть разбора этого. Есть несколько способов его анализа, от регулярных выражений до индексации строк.

...