Jquery 对返回excel文件流的控制器的Ajax调用导致格式不正确的错误
我们当前的网站有几个html数据表,可以在客户端对其进行排序,然后将其导出到excel文件。我正在尝试创建通用方法,该方法可以处理传递到控制器中的任何表数据,并仅在内存中创建文件。我只是使用一个简单的按钮单击事件来启动一个ajax调用,将JSON对象传递给控制器,如下所示:Jquery 对返回excel文件流的控制器的Ajax调用导致格式不正确的错误,jquery,json,ajax,asp.net-mvc-5,Jquery,Json,Ajax,Asp.net Mvc 5,我们当前的网站有几个html数据表,可以在客户端对其进行排序,然后将其导出到excel文件。我正在尝试创建通用方法,该方法可以处理传递到控制器中的任何表数据,并仅在内存中创建文件。我只是使用一个简单的按钮单击事件来启动一个ajax调用,将JSON对象传递给控制器,如下所示: var convertedTable = JSON.stringify({ myTableArray: myTableArray }); $.ajax({ type: 'POST', url: '/Ta
var convertedTable = JSON.stringify({ myTableArray: myTableArray });
$.ajax({
type: 'POST',
url: '/TableToExcel',
data: JSON.stringify({ myTableArray: myTableArray }),
contentType: 'application/json; charset=utf-8',
dataType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
success: function (returnValue) {
window.location = '/Reports/Download?file=' + returnValue;
}
});
控制器现在很简单,当浏览器直接调用时,它可以很好地返回文件
public FileResult Index(List<string[][]> tableData)
{
ExcelPackage pck = new ExcelPackage();
var ws = pck.Workbook.Worksheets.Add("Sample2");
ws.Cells["A1"].Value = "Sample 2";
ws.Cells["A1"].Style.Font.Bold = true;
var stream = new MemoryStream(pck.GetAsByteArray());
return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
公共文件结果索引(列表tableData)
{
ExcelPackage pck=新的ExcelPackage();
var ws=pck.Workbook.Worksheets.Add(“示例2”);
ws.Cells[“A1”].Value=“样本2”;
ws.Cells[“A1”].Style.Font.Bold=true;
var stream=newmemorystream(pck.GetAsByteArray());
返回文件(流,“application/vnd.openxmlformats officedocument.spreadsheetml.sheet”);
我在FF调试器中不断遇到格式不正确的错误。这是正确的处理方法吗
我还认为表单是更好的方式,但不确定这是否有效,因为我需要在提交表单之前首先处理表数据,并且需要使用POST来处理JSON对象
任何关于处理此问题的最佳方法的建议都将不胜感激。对于任何正在搜索答案的人。 是的,你可以而不是这样做。
我实际上是想把文件本身传回去。根据我所读到的和确定的,Ajax只接受字符串。我返回的所有示例都返回了保存的文件位置,而不是文件本身。任何搜索答案的人。 是的,你可以而不是这样做。 我实际上是想把文件本身传回去。根据我读到的和确定的,Ajax只接受字符串。我回来的所有示例都返回了保存的文件位置,而不是文件本身