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>