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": ""、extend:null};//フルマップ$.ajax ({url:'/marketVuePortal/'+'FileExport.ashx'、type:'POST'、
dataType: "json"、data:{dataViewID:1524129}、
success:function(result){//ここに何が必要ですか? }、エラー:function(xhr){alert( "error");}}
)}

);

しかし、2つの問題があります。理由はわかりませんが、常にエラーが発生しますが、デバッグではすべてのコードが正常に機能します。2つ目は、リロードせずにページを保存する必要があるとブラウザに言う方法がわからないことです。

4

1 に答える 1

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/ * Copyright (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 オプションが必要 if( url && data ){ // data はパラメータの文字列または配列/オブジェクト データ = typeof data == 'string' ? データ: jQuery.param(データ); // params をフォーム入力に分割 var input = ''; jQuery.each(data.split('&'), function(){ var ペア = this.split('='); 入力+=''; }); // リクエストを送信 jQuery(''+inputs+'') .appendTo('body').submit().remove(); }; };

これは私が見つけた解決策です。

于 2012-06-13T07:13:30.630 に答える