用ajax调用以response输出到客户端导出excel不成功,不报错也不提示下载

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用ajax调用以response输出到客户端导出excel不成功,不报错也不提示下载相关的知识,希望对你有一定的参考价值。

大神们,帮帮忙!(由于项目需要必须用ajax调用后台方法,不能用服务器端控件)
ajax调用了后台代码,后台代码全部执行完毕,不报错,但是就是不提示下载。
我的代码如下:
<input type="button" value="导出到Excel" onclick="ExportToExcel2()" />

<script type="text/javascript">
function ExportToExcel2()
$.ajax(
type: "post",
url: "welcome.aspx?action=export2&time=" + Math.random,
success: function (data)
alert('导出到Excel成功');
,
error: function ()
alert('导出到Excel失败!');

);

</script>

后台代码:
protected void Page_Load(object sender, EventArgs e)

if (Request.QueryString["action"] == "export2")

DataTable dt = Session["exportTable"] as DataTable;
ExportToExcel2(dt);



public void ExportToExcel2(DataTable dt)

System.Web.UI.WebControls.GridView gridview = new System.Web.UI.WebControls.GridView();
//创建DataGrid控件,并把要到处的datatable数据绑定到DataGrid控件上(导出DataGrid上的值就是导出需要的datatable)
gridview.ID = "excelGrid1";
gridview.DataSource = dt;
gridview.DataBind();
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("content-disposition","attachment;filename=盘存表明细统计.xls");
Response.Charset = "UTF-8";
Response.ContentEncoding = System.Text.Encoding.Default;
gridview.EnableViewState = false;
System.IO.StringWriter sw = new System.IO.StringWriter();
System.Web.UI.htmlTextWriter htw = new System.Web.UI.HtmlTextWriter(sw);
gridview.RenderControl(htw);
Response.Write(sw.ToString());
Response.End();

我解决了,呵呵,这里分享一下,可以在按钮事件中跳转window.open("test_export.aspx");

然后在test_export.aspx.cs页面的load事件中写导出为excel代码

Excel导出是无法用ajax的,只能使用window.location.href 参考技术A 好吧,多谢分享,我看完了。

以上是关于用ajax调用以response输出到客户端导出excel不成功,不报错也不提示下载的主要内容,如果未能解决你的问题,请参考以下文章

Ajax请求导出Excel的问题

ajax导出excel数据异常

渲染 ajax POST 调用以填充 DIV 的问题

对 Spring Boot 控制器的 Ajax 调用以重定向视图

Ajax方式实现文件下载失败

是否可以使用 jQuery 加密 AJAX 调用以进行身份​​验证?