您好我需要在服务器端生成一些文件并使用AJAX将它们返回给客户端
我在服务器(ASHX)上创建下一个代码
public void ProcessRequest(HttpContext context)
{
string dataViewID = context.Request.Form["dataViewID"];
MyService service = new MyService();
var data = service.GetStores(int.Parse(dataViewID), "", null);
IMyExportService exportservice = new MyExportService();
HttpContext.Current.Response.ContentType = "application/octet-stream";
HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + "export.cvs");
using (var ms = new MemoryStream())
{
using (var sw = new StreamWriter(ms))
{
exportservice.ExportTo("csv", sw, data);
ms.Position = 0;
HttpContext.Current.Response.Write(ms.ToArray());
}
}
}
客户端上的我创建下一个代码:
$(“#btnexport”)。click(function(){
var paramData = {“dataViewID”:1524129,“filter”:“”,extent:null}; //完整的地图
$就({
url:'/ marketVuePortal/'+'FileExport.ashx',
类型:'POST',
dataType:“json”,
数据:{dataViewID:1524129},
成功:功能(结果){
//应该在这里?
},
错误:function(xhr){
警报( “错误”);
}
}
)}
);
但我有2个问题我不知道为什么,但我总是得到错误,但在调试所有代码运作良好。第二是我不知道怎么说浏览器他需要保存页面而没有重新加载。
答案 0 :(得分:1)
/ * * -------------------------------------------------- ------------------ * jQuery-Plugin - $ .download - 允许对文件进行简单的get / post请求*作者:Scott Jehl,scott @ filamentgroup.com * http://www.filamentgroup.com *参考文章: http://www.filamentgroup.com/lab/jquery_plugin_for_requesting_ajax_like_file_downloads/ *版权所有(c)2008 Filament Group,Inc *双重许可MIT(filamentgroup.com/examples/mit-license.txt)和GPL (filamentgroup.com/examples/gpl-license.txt)许可证。 * -------------------------------------------------- ------------------ * / jQuery.download = function(url,data,method){// url和data options if if(url&& data){ //数据可以是字符串 参数或数组/对象数据= typeof data =='string'?数据: jQuery.param(数据); //将params拆分为表格输入var inputs = ''; jQuery.each(data.split('&'),function(){var pair = this.split( '=');输入+ = ''; }); //发送请求jQuery(''+ inputs +'') 。.appendTo( '主体')提交()除去(); }; };
这是我找到的解决方案。