$ajax调用ashx 实现下载 代码都执行了就是没有下载出现怎么解决 求大神指教

问题描述

前台varmytoolbar=[];mytoolbar=[{id:'btnExport',text:'导出',iconCls:'icon-redo',handler:function(){debugger;varcomids=getChecked();vartbSex=$("#tbSex").val();vartbAge=$("#tbAge").val();vartbEducation=$("#tbEducation").val();varHidCurrntComId=$("#HidCurrntComId").val();$.ajax({type:"post",url:"../ZGManage/JobDataTotal.ashx?HidCurrntComId="+HidCurrntComId+"&comids="+comids+"&strSex="+tbSex+"&strAge="+tbAge+"&strEducation="+tbEducation,contentType:"application/json;charset=utf-8",dataType:"json"})}}];ashx方法privatevoidToExcel(HttpContextcontext){stringstrComIds=context.Request["comids"];varwhereStr=getWhereStr(context);if(string.IsNullOrWhiteSpace(strComIds))strComIds=context.Request["HidCurrntComId"];varcompanyIdWhere=getCompanyIdWhere(strComIds);varresult=RPTGetIndustryJobNumByCompanyId(companyIdWhere,whereStr);result.Columns.Remove("IndustryId");result.Columns["Name"].ColumnName="行业类别";result.Columns["Z1"].ColumnName="一级";result.Columns["Z2"].ColumnName="二级";result.Columns["Z3"].ColumnName="三级";result.Columns["Z4"].ColumnName="四级";result.Columns["Z5"].ColumnName="五级";result.Columns["Z6"].ColumnName="六级";result.Columns["Z7"].ColumnName="七级";result.Columns["Z8"].ColumnName="八级";result.Columns["Z9"].ColumnName="九级";result.Columns["Z10"].ColumnName="十级";result.Columns["Z11"].ColumnName="十一级";result.Columns["Z12"].ColumnName="十二级";result.Columns["Z13"].ColumnName="十三级";result.Columns["G1"].ColumnName="管理一级";result.Columns["G2"].ColumnName="管理二级";result.Columns["G3"].ColumnName="管理三级";result.Columns["G4"].ColumnName="管理四级";result.Columns["G5"].ColumnName="管理五级";result.Columns["G6"].ColumnName="管理六级";result.Columns["G7"].ColumnName="管理七级";result.Columns["G8"].ColumnName="管理八级";result.Columns["G9"].ColumnName="管理九级";result.Columns["G10"].ColumnName="管理十级";result.Columns["Q1"].ColumnName="一级技工";result.Columns["Q2"].ColumnName="二级技工";result.Columns["Q3"].ColumnName="三级技工";result.Columns["Q4"].ColumnName="四级技工";result.Columns["Q5"].ColumnName="五级技工";result.Columns["Q6"].ColumnName="普通工";StringWritersw=newStringWriter();HttpContextcurContext=HttpContext.Current;stringsWriteLine="";//stringsExcelFileName="行业类别统计表.xls";stringsExcelFileName="report.xls";inti=0;for(i=0;i<result.Columns.Count-1;i++){sWriteLine+=result.Columns[i].ColumnName.ToString().Trim()+"t";}sWriteLine+=result.Columns[result.Columns.Count-1].ColumnName.ToString().Trim();sw.WriteLine(sWriteLine);//写内容foreach(DataRowdrinresult.Rows){sWriteLine="";for(i=0;i<result.Columns.Count-1;i++){sWriteLine+=dr[i].ToString().Trim()+"t";}sWriteLine+=dr[result.Columns.Count-1].ToString().Trim();sw.WriteLine(sWriteLine);}curContext.Response.ContentEncoding=System.Text.Encoding.GetEncoding("gb2312");//可令中文文件名不为乱码curContext.Response.AppendHeader("content-disposition","attachment;filename="+HttpUtility.UrlPathEncode(sExcelFileName));System.Globalization.CultureInfomyCItrad=newSystem.Globalization.CultureInfo("ZH-CN",true);curContext.Response.ContentType="application/ms-excel";HttpContext.Current.Response.Charset="gb2312";curContext.Response.Write(sw);curContext.Response.Flush();不知道哪里的问题方法执行了就是没有下载提示

解决方案

解决方案二:
能从哪里学的“下载”?贴出你的依据来。
解决方案三:
你知道么,你写了如此多的一大堆东西,却再稍微深入一点点的知识上完全没有任何依据。这就好像一个种了1年田、辛勤耕耘的人却一点干农活的经验都不尊重,这让村里的正经农民笑话了。
解决方案四:
1、确认在表单提交时能够弹出下载对话框2、指示下载的http头被XMLHttpRequest组件接收,他是否能处理?即便能处理,XMLHttpRequest在后台运行,弹出的下载对话框你如何能看到并点击?ajax文件下载应是这样的流程:ajax提交数据--服务端处理并缓存结果--交还给ajax一个有效的链接--用js代码访问该链接,完成下载
解决方案五:
引用2楼sp1234的回复:

你知道么,你写了如此多的一大堆东西,却再稍微深入一点点的知识上完全没有任何依据。这就好像一个种了1年田、辛勤耕耘的人却一点干农活的经验都不尊重,这让村里的正经农民笑话了。

我也是刚接触这样的东西不知道怎么弄我看之前的是这样弄的能教教我么
解决方案六:
引用1楼sp1234的回复:

能从哪里学的“下载”?贴出你的依据来。

我看其他的都是这样的啊
解决方案七:
引用3楼xuzuning的回复:

1、确认在表单提交时能够弹出下载对话框2、指示下载的http头被XMLHttpRequest组件接收,他是否能处理?即便能处理,XMLHttpRequest在后台运行,弹出的下载对话框你如何能看到并点击?ajax文件下载应是这样的流程:ajax提交数据--服务端处理并缓存结果--交还给ajax一个有效的链接--用js代码访问该链接,完成下载

什么意思
解决方案八:
在handler里,curContext.Response.Write(sw);会被success函数接收你可以在生成文件后,用context.Response.Redirect(文件路径);来实现下载,浏览器会自动启动下载对话框
解决方案九:
引用7楼From_TaiWan的回复:

在handler里,curContext.Response.Write(sw);会被success函数接收你可以在生成文件后,用context.Response.Redirect(文件路径);来实现下载,浏览器会自动启动下载对话框

什么意思
解决方案十:
引用2楼sp1234的回复:

你知道么,你写了如此多的一大堆东西,却再稍微深入一点点的知识上完全没有任何依据。这就好像一个种了1年田、辛勤耕耘的人却一点干农活的经验都不尊重,这让村里的正经农民笑话了。

比喻太多了,给点切实际的。棒棒新手
解决方案十一:
最简单的先在服务器里把excel文件保存,然后返回URL路径,使用window.open方式就可以下载了

时间: 2024-09-23 09:25:23