2
我有一个简单的页面按钮,它通过JavaScript调用HttpHandler。从javascript中调用HttpHandler
HttpHandler获取大量文件并将它们添加到一个zip文件,完成工作后,zip文件将被添加到Response。
此操作可能需要几分钟的时间。我想在完成HttpHandler的工作后执行一些JavaScript函数。
我该怎么办?
我的代码:
<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()我可以看到的responseText(二进制)我的zip文件。但我对浏览器如何下载文件等工作的httphandler的结果并不知情。
任何想法?
谢谢,但我不能使用JQuery,我需要其他解决方案 – Ukraine 2011-05-15 12:35:07
不知道我可以帮忙。您显然需要知道处理程序何时完成执行,也许轮询目录中zip文件的计时器。一旦完成并找到文件,运行一个函数。虽然这看起来不对。抱歉。 – Dietpixel 2011-05-15 12:39:27