我有一个简单的页面,带有通过 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>
更新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 AJAX,然后在成功后编写一个函数来完成您需要的任何工作。另外,使用 AJAX,您可以向用户显示一个表示正在加载的图标,以便他们知道某些内容实际上正在处理,而不是页面只是挂起并且似乎没有发生任何事情。
$.ajax({
url: "FileStorage.ashx",
context: document.body,
success: function(){
// Whatever you want to do here in javascript.
}
});
关于javascript - 从 javascript 调用 HttpHandler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6008362/