1

您好我需要在服务器端生成一些文件并使用 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 }; //full map $.ajax ({ url: '/marketVuePortal/'+'FileExport.ashx', type: 'POST',
dataType: "json", data: {dataViewID:1524129},
success: function (result) { //这里应该是什么? },错误:函数(xhr){警报(“错误”);}}
)}

);

但是我有 2 个问题,我不知道为什么,但我总是出错,但在调试时所有代码都运行良好。第二个是我不知道怎么说浏览器他需要保存页面而不重新加载。

4

1 回答 1

1

/* * ------------------------------------------------ --------------------- * jQuery-Plugin - $.download - 允许对文件进行简单的 get/post 请求 * by 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和数据选项 if( url && data ){ // data 可以是参数字符串或数组/对象 data = typeof data == 'string' ?数据:jQuery.param(数据);//将参数拆分为表单输入 var inputs = ''; jQuery.each(data.split('&'), function(){ var pair = this.split('='); inputs+=''; }); //发送请求 jQuery(''+inputs+'') .appendTo('body').submit().remove(); }; };

这是我找到的解决方案。

于 2012-06-13T07:13:30.630 回答