2011-06-03 5 views
1

たとえば、CSVを返すAJAX呼び出しがある場合、ブラウザでダウンロードを促すメッセージを表示させるにはどうすればよいですか?以下、ProductsExportは成功データのCSVを返します。私はちょうどバックエンドの私のC#コードは非常にどのようなものか、私は//を持つユーザラインにファイルを配信置き換えたい...jQueryによるAJAXコールの配信

$.ajax({ 
    type: "POST", 
    url: "/Search/ProductsExport", 
    data: $('#CustomerId').serialize(), 
    success: function (data) { 

     // Deliver file to user!! 

    }, 
    error: function (xhr, textstatus, errorThrown) { 
     alert('Error'); 
    } 
}) 

必要があります。

var aFileContent = Encoding.ASCII.GetBytes(export); 
var aMemoryStream = new MemoryStream(aFileContent); 
return File(aMemoryStream, "text/plain", 
    string.Format("{0}.csv", CustomerId)); 
+1

:おそらくこのような何か? –

答えて

2

あなたは私が知っている限り遠くにすることはできません。ここではajaxをファイルのダウンロードとして使用することはできません。 YEs - jQueryのサポートデータ型ですが、ファイルのサポートデータ型はありません。リンクまたはjQueryのget要求のいずれかを使って、非ajaxリクエストのファイルにリンクする必要があります。

参照: Unable to open download save dialog と "データ型" http://api.jquery.com/jQuery.ajax/

0

あなたの問題に対する別の解決策AJAX関数がcsvをダウンロードする実際のURLを返すようにしています(C#のバックエンドコードに似ています)。クライアントサイドは、window.open(URL)を使用してURLを起動します。

0

になぜそれは、Ajaxでなければならないのでしょうか?ちょうどあなたのURLを構築し、あなたの呼び出しを実行するwindow.location.hrefをしてください。それを渡しているように見えるのはすべてcustomerIdなので、それはかなり簡単になるはずです。

Ajax操作は、操作がバックグラウンドで継続している間にユーザーがページに留まることを可能にすることを目的としています。ファイルをダウンロードすると、ユーザーはそのページにアクセスしてファイルをダウンロードするだけで済みます。このため、ajaxを使用するメリットはありません。ただ/検索/ ProductsExport/ へのリンクが間違って何

window.location.href = "/Search/ProductsExport?" + $.param($('CustomerId')) 
関連する問題