C# と JavaScript を使用しています。私の目標は、CSV ファイルがダウンロードされる ajax リクエストを送信することです。CSV はサーバー側で ashx ページに生成されます。現在、アプリケーションは CSV をダウンロードできますが、AJAX 要求の代わりにフォームを使用しますが、バックエンド コードは同じです。
失敗した ajax リクエストは次のとおりです。
$.ajax({
url: "myDir/x.ashx/exportAllData",
type: 'POST',
data: {
id:8
},
success: function(ajaxResult){
console.log(ajaxResult);
}
});
機能する Form メソッドは次のとおりです。
var $form = $(document.createElement('form'))
.attr({
action: 'myDir/x.ashx/exportAllData',
method: 'POST'
})
.css('display', 'none')
.appendTo('body');
$form.submit();
$form.empty().remove();
ハンドラー (C#) のコードは次のとおりです。これは、上記の両方のケースで同じです。
else if(action == "exportalldata")
{
StringBuilder sb = new StringBuilder();
sb.AppendLine("test1,test2,test3,test4,test5");
context.Response.Clear();
context.Response.ContentType = "application/csv";
context.Response.AddHeader("Content-Disposition", "attachment;filename=data.csv");
context.Response.Write(sb.ToString());
context.Response.End();
}