Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 响应前关闭模态。冲洗-C#_Javascript_C#_Twitter Bootstrap - Fatal编程技术网

Javascript 响应前关闭模态。冲洗-C#

Javascript 响应前关闭模态。冲洗-C#,javascript,c#,twitter-bootstrap,Javascript,C#,Twitter Bootstrap,我对模式关闭有问题。。。 所以我有一个按钮btnReportingExport,它位于modal的内部 <div id="Reporting_footer" class="modal-footer"> <asp:Button ID="btnReportingExport" runat="server" Text="Export" CssClass="btn btn-default" OnClientClick="ChangeModalF

我对模式关闭有问题。。。 所以我有一个按钮
btnReportingExport
,它位于modal的内部

<div id="Reporting_footer" class="modal-footer">
    <asp:Button ID="btnReportingExport" runat="server" Text="Export" 
                CssClass="btn btn-default" OnClientClick="ChangeModalFunction();" 
                OnClick="btnReportingExport_Click"/>
    <input id="Submit1" class="btn btn-default" type="submit" data-dismiss="modal" 
           value="Cancel" />
</div>
因此,我只是隐藏模式,并显示另一个模式,它只有一些
.gif
动画用于生成报告。之后,我的主要事件发生了
btnReportingExport\u单击
,加载内容,从SQL获取数据,将其放入excel,转换为PDF,压缩并将其放入响应 看起来像这样

Response.Clear();
Response.ContentType = "application/x-zip-compressed";
Response.AddHeader("Content-Disposition", 
  string.Format("attachment; filename=\"{0}.zip\"", QuestionnaireName));

Response.WriteFile(FilePathZip);
因此,我希望完成的,但不幸失败的是,在我刷新响应之前,用
.gif
关闭模态。。。我再也不知道该怎么做了

ScriptManager.RegisterStartupScript(this, this.GetType(), 
                                    "CloseModal", "Closepopup();", true);

Response.Flush();
Closepopup
函数只是一个简单的函数

function Closepopup() {
    $('#GenerateReport_modal').modal('hide');
}
所以在漫长的代码旅行之后,我的问题出现了,我得到了下载文件对话框,我的模式仍然在后台运行。我完全不知道如何修复它,如何在执行
Response.Flush()
之前对代码隐藏模态


感谢您的帮助,我为文本墙的有趣场景道歉,我希望您尝试以下解决方案: 使用jquery通过ajax请求调用zip文件端点(您也可以使用vanilla javascript)。然后将此事件
onreadystatechange
绑定到您的请求

$(".submitButton").click(function(){
    var xhr  = $.ajax({url: "/data.zip",
     success: function(result){

    }});
    xhr.onreadystatechange = function() { 
        if(xhr.readyState === 4)
            Closepopup();
    };
});
此事件将以5种不同的状态触发:

  • 0:请求未初始化
  • 1:已建立服务器连接
  • 2:收到请求
  • 3:处理请求
  • 4:请求已完成,响应已准备就绪

  • 我相信当您获得此状态4时,对话框将同时打开,您可以关闭弹出窗口。

    非常感谢您,我知道这是正确的方法。。。但是我的AJAX知识不适合用这种方式完成它。。。借助@JABFreeware的一点帮助,我找到了一种创建cookie的方法,一旦开始创建报告,就会对cookie进行检查。在cookie值更改后,我关闭模式并销毁cookie,并停止检查间隔
    $(".submitButton").click(function(){
        var xhr  = $.ajax({url: "/data.zip",
         success: function(result){
    
        }});
        xhr.onreadystatechange = function() { 
            if(xhr.readyState === 4)
                Closepopup();
        };
    });