У меня есть подключаемый модуль jQuery, который я использую для динамического создания и отображения формы на странице default.aspx asp.net, а затем отправьте ее. Страница, на которую он отправляется, является страницей pdf.aspx. Страница создает PDF-файл, а затем использует Response.Write для записи файла (приложение/pdf) в браузер. Я использую тот же метод для рендеринга файлов XLSX в браузере. Это работает очень хорошо, но мне нужен обратный вызов или какое-то событие, чтобы сообщить кнопке, когда перестать вращаться. Это не позволяет пользователю постоянно нажимать кнопки Excel или PDF. Кто-нибудь знает способ обнаружить диалоговое окно файла, когда оно не было создано с помощью javascript? Я также открыт для других методов обратного вызова со стороны сервера.
Можете ли вы использовать Javascript для обнаружения окна загрузки файла, созданного на стороне сервера?
Ответы (1)
То, как я это делаю, было предложено в ответ на вопрос, который я задал здесь некоторое время назад, Т.Дж. Краудер. Я не могу найти ответ с момента, когда я писал это в последний раз, потому что средство «поиска» Stackoverflow невероятно хромает, поэтому я, вероятно, наберу сообщение в блоге. Основная идея заключается в том, что ваш клиентский код (Javascript) должен добавлять дополнительный параметр при отправке запроса на загрузку. Параметр должен содержать какую-то сгенерированную случайную строку (возможно, достаточно только текущей временной метки). Затем сервер ищет этот параметр, и когда он готовит ответ с загружаемым файлом, он также устанавливает файл cookie и присваивает ему это случайное значение.
Сразу после отправки (или прямо перед этим, это не имеет большого значения) код Javascript должен запускать интервальный таймер с подпрограммой, которая просматривает значение document.cookie
и проверяет, содержит ли оно эту случайную строку. Как только файл cookie содержит эту строку, вы знаете, что сервер отправил свой ответ и что был представлен диалог загрузки файла.