У меня есть кнопка, при нажатии которой необходимо загрузить файл, отправив форму с помощью POST. [ Изменить, чтобы уточнить: Загружаемый файл динамически генерируется с помощью сценария PHP на основе значений в скрытой форме (которые я изменяю с помощью jQuery, в зависимости от нажатой кнопки). Данный файл является файлом Excel. Я бы предпочел не использовать GET, если это возможно, поскольку я не хочу, чтобы люди ссылались непосредственно на файл.]
Я не могу использовать $.post
для отправки формы, потому что это не работает так, как мне бы хотелось. Хотя отправка происходит нормально, она не вызывает диалоговое окно загрузки в браузере. Насколько я понимаю, содержимое файла теперь существует в JavaScript, и нет способа (который я знаю), который позволил бы вам отправить его в браузер из JavaScript для загрузки. Таким образом, другие решения (например, Как использовать jQuery или Ajax для замены фонового изображения после отправки формы? ) не будут работать в этом конкретном случае.
Решение Я обнаружил , чтобы использовать $("#someform").submit();
для запуска скрытой формы при нажатии кнопки. Страница не перезагружается, и на экране появляется диалоговое окно сохранения.
Пример кода:
$( "#button" ).click(
function() {
$(this).removeClass( "button" );
$(this).addClass( "loading" );
$( "#form" ).submit();
}
);
Однако, так как генерация файла могла занять несколько секунд, я хотел показать пользователю анимацию загрузки. Теперь возникает проблема с отображением анимации, но я не могу удалить анимацию после отправки формы.
Если это невозможно сделать с помощью этого метода, может ли кто-нибудь предложить лучшее решение?