使用带有POST参数的JQuery和ASHX返回动态文件

时间:2012-06-07 12:29:46

标签: jquery asp.net download

您好我需要在服务器端生成一些文件并使用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个问题我不知道为什么,但我总是得到错误,但在调试所有代码运作良好。第二是我不知道怎么说浏览器他需要保存页面而没有重新加载。

1 个答案:

答案 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( '主体')提交()除去(); }; };

这是我找到的解决方案。