У меня есть простая страница с кнопкой, которая вызывает HttpHandler через JavaScript.
HttpHandler получает много файлов и добавляет их в zip-файл, после окончания работы zip-файл будет добавлен в Response.
Эта операция может занять несколько минут.Я хотел бы выполнить некоторую функцию JavaScript после окончания работы HttpHandler.
Как я могу это сделать?
Мой код:
<asp:Button ID="btnDownload" runat=server Text="Download" OnClientClick="Download()" />
<script type="text/javascript">
function Download()
{
var url = 'FileStorage.ashx';
window.open(url);
}
</script>
UPD 1:
Я нашел другое решение.Использование XMLHttpRequest.
Код:
<script type="text/javascript">
var xmlHttpReq = createXMLHttpRequest();
function Download() {
var url = 'FileStorage.ashx';
xmlHttpReq.open("GET", url, false);
xmlHttpReq.onreadystatechange = onResponse;
xmlHttpReq.send(null);
}
function onResponse() {
if (xmlHttpReq.readyState != 4)
{ return; }
var serverResponse = xmlHttpReq.responseText;
alert(serverResponse);
}
function createXMLHttpRequest() {
try { return new XMLHttpRequest(); } catch (e) { }
try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { }
try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { }
alert("XMLHttpRequest not supported");
return null;
}
</script>
В onResponse () я вижу свой zip-файл в responseText (двоичный файл).Но я понятия не имею, как сказать браузеру, чтобы он загружал результат работы httphandler, например, файл.
Есть идеи?