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内容类型的文档,并使它带来浏览器的’保存’对话框。”)

如何使用$ .ajax()GET响应指定内容类型和内容处置

那里有人为它提供了一个解决方法:

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


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

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

HTML

  

你可以尝试一下Ajaxpost

 $.ajax({ dataType: "HTML", cache: false, type: "GET", url: 'ExcelService.aspx'; 

这将提示获取并具有比仅使用jquery更多的灵活性