AJAX / Получить файл с сервера

Приветствую.

Подскажите существует ли способ получить файл с сервера с помощью JavaScript/AJAX?

Вот какая ситуёвина. Есть страница на которой пользователь совершает некие действия, заполняет формы и т.д. Много всего. Необходимо на основе данных страницы сгенерировать xls документ. Категорически противопоказано перезагружать страницу, так как это вызывает нервные срывы, седые волосы, истерики и т.д., следовательно просто ссылка на скрипт генерации файла отпадает.

Вижу два выхода, имеющие очевидные минусы:
1. Открывать страницу для загрузки файла в новом окне.
2. Как пишут тут.

Существуют ли способы сделать это без лишних телодвижений на AJAX?

UPD:

Пришел к такому решению, если кому интересно.
На основе данных генерирую скрытый iframe, который и выдает файл. После загрузки пинает, с задержкой (onload стартует раньше появления окна сохранения файла), функцию удаления себя. Так как начало и конец загрузки файла отслеживается есть возможность, например, блокировать кнопочку "получения файла" пока тот генерируется или еще что-то.

1 ответов


Всё просто. Ajax запросом отправляете данные на сервер. Данные сохраняются в локальный xls файл, а в Ajax возвращается его идентификатор (имя или что хотите). После получения идентификатора, генерируете ссылку на серверный обработчик, принимающий идентификаторы файлов и отдающих в ответ сам файл.
UPDATE
Если необходимо, чтобы не появлялась ссылка, а сразу после отправки формы выдавался файл, то:
1. Используя JavaScript собираете значения из полей формы.
2. Формируете URL для GET запроса на генератор файлов.
3. Делаете кнопку отправки ссылкой, а не сабмитом.
4. Перед нажатием кнопки подставляете правильный URL.


без заморочек.
window.location+="путь до файла от текущей location";