Задать вопрос

Как через ajax запустить php, генерирующий файл?

Есть форма с jquery, которая генерирует word-овский файл исходя из значений полей. Её описание:



<form id="vform" name="vform" method="post" action="/generate.php">




generate.php создает файл и передает его пользователю такими заголовками:



header('X-Accel-Redirect: ' . $shortfilename);<br>
header('Content-Type: application/octet-stream');<br>
header('Content-Disposition: attachment; filename=' . basename($shortfilename));


Таким образом файл генерируется, появляется диалог сохранения, форма не перегружается.



Всё работает ок, только вот хочется сделать disable кнопке на время генерации файла и вывести какое-то сообщение в конце.

Я ничего лучше не придумал кроме как отслеживать submit формы и запускать php файл через ajax. Но тут не очень понятно — как сделать сохранение? вместо responce у меня выходит исходный код word-файла.

Прочитал советы начать скачивание через скрытый iframe и т.п. но в этом случае не понятно, как выдать сообщение об окончании загрузки.



Пожалуйста, подскажите, как быть.
  • Вопрос задан
  • 8913 просмотров
Подписаться 5 Оценить Комментировать
Ответ пользователя Максим Барулин К ответам на вопрос (5)
Slavenin999
@Slavenin999
программист php/erlang/elixir/js
все проще,
создаем iframe, сабмитим форму в него,
блокируем кнопки,
на событие загрузки фрейма вешаем обработчик,
как-только окно загрузилось значит можно разблокировать контролы убрать iframe
Ответ написан
Комментировать