从javascript调用HttpHandler
我有一个带有按钮的简单页面,它通过JavaScript调用HttpHandler HttpHandler获取大量文件并将其添加到zip文件中,完成工作后,zip文件将添加到响应中 此操作可能需要几分钟。我想在完成HttpHandler的工作后执行一些JavaScript函数 我怎么做 我的代码:从javascript调用HttpHandler,javascript,asp.net,ashx,Javascript,Asp.net,Ashx,我有一个带有按钮的简单页面,它通过JavaScript调用HttpHandler HttpHandler获取大量文件并将其添加到zip文件中,完成工作后,zip文件将添加到响应中 此操作可能需要几分钟。我想在完成HttpHandler的工作后执行一些JavaScript函数 我怎么做 我的代码: <asp:Button ID="btnDownload" runat=server Text="Download" OnClientClick="Download()" /> <sc
<asp:Button ID="btnDownload" runat=server Text="Download" OnClientClick="Download()" />
<script type="text/javascript">
function Download()
{
var url = 'FileStorage.ashx';
window.open(url);
}
</script>
函数下载()
{
var url='FileStorage.ashx';
窗口打开(url);
}
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>
var xmlHttpReq=createXMLHttpRequest();
函数下载(){
var url='FileStorage.ashx';
xmlHttpReq.open(“GET”,url,false);
xmlHttpReq.onreadystatechange=onResponse;
xmlHttpReq.send(null);
}
函数onResponse(){
if(xmlHttpReq.readyState!=4)
{return;}
var serverResponse=xmlHttpReq.responseText;
警报(服务器响应);
}
函数createXMLHttpRequest(){
请尝试{返回新的XMLHttpRequest();}捕获(e){}
尝试{returnnewActiveXObject(“Msxml2.XMLHTTP”);}catch(e){}
请尝试{返回新的ActiveXObject(“Microsoft.XMLHTTP”);}catch(e){}
警报(“不支持XMLHttpRequest”);
返回null;
}
在onResponse()中,我可以在responseText(二进制)中看到我的zip文件。但我不知道如何才能对浏览器说下载工作的httphandler的结果,比如文件
有什么想法吗?我会使用JQuery AJAX,如果成功,我会编写一个函数,它可以完成您需要的任何工作。另外,使用AJAX,您可以向用户显示一个图标,上面写着“加载”,这样他们就知道实际正在处理某些内容,而不是页面挂起,看起来什么也没有发生
$.ajax({
url: "FileStorage.ashx",
context: document.body,
success: function(){
// Whatever you want to do here in javascript.
}
});
谢谢,但我不能使用JQuery,我需要其他解决方案。我不确定我能帮上忙。显然,您需要知道处理程序何时完成执行,可能需要轮询目录中zip文件的计时器。完成并找到文件后,运行函数。尽管这似乎是错误的。很抱歉