jquery – 在$.get上提示excel文件

Internet Explorer用于在执行Response.Write后提示用户下载excel文件

Response.ContentType = "application/vnd.ms-excel";
            Response.AddHeader("Content-Disposition", "attachment;filename=\"sheet.xls\"");
            Response.RedirectLocation = "export.xls";
            Response.Charset = "";
EnableViewState = false;

            System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
            System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);

            dataGridResult.RenderControl(oHtmlTextWriter);
            Response.Write(oStringWriter.ToString());

当我使用按钮单击事件POST回到页面时,这可以工作.

我使用页面作为服务并执行$.get(),但结果将以HTML格式发送回来.我没有被提示打开excel文件.如何将提示发送给用户?

$.get('ExcelService.aspx',
                        { batches: input },
                        function (data) {
                            alert(data);//I see HTML
                        });

最佳答案 这是一个类似的线程,有类似的问题(“我想做一个异步GET请求,返回一个MIME内容类型的文档,并使它带来浏览器的’保存’对话框.”)

How to specify content-type and content-disposition with $.ajax() GET response

有人提供了一个解决方法:

如果您想以编程方式弹出保存对话框,则可以使用jQuery将隐藏的iframe附加到页面,其URL为src.这应该根据需要弹出对话框.

样品
jquery – 点击(不需要ajax / get)

            var dynamicUrl = 'ExcelService.aspx?batches=' + input;
            $('#excelPopup').attr('src', dynamicUrl);
            window.frames["#excelPopup"].location.reload();

HTML

<iframe id="excelPopup" style="visibility:hidden;height:0px;width:0px;"></iframe>
点赞