Asp.net mvc 3 关于使用jquery ajax返回excel文件的建议
我有一个网页,有一堆字段,并得到EXCEL按钮。当前,当用户按下GET EXCEL按钮时,一个js脚本从字段收集数据,编造一个指向动作控制器的url: 在js中:Asp.net mvc 3 关于使用jquery ajax返回excel文件的建议,asp.net-mvc-3,jquery,Asp.net Mvc 3,Jquery,我有一个网页,有一堆字段,并得到EXCEL按钮。当前,当用户按下GET EXCEL按钮时,一个js脚本从字段收集数据,编造一个指向动作控制器的url: 在js中: $("excel-btn").onclick( function () { //get selected parameters: p1 = $("#p1").val(); p2 = $("#p2").val(); p3 = $("#p3").val(); window.location = "myCo
$("excel-btn").onclick( function () {
//get selected parameters:
p1 = $("#p1").val();
p2 = $("#p2").val();
p3 = $("#p3").val();
window.location = "myController/getExcel?p1=" + p1 + "&p2=" + p2 + "&p3=" + p3;
});
在我的控制器操作中:
public ActionResult DownloadExcel(string p1, string p2, string p3)
{
//go to the database and get the data, shove it into the file
return File(ms, "application/ms-excel", "myfile.xls");
}
问题:
我希望使用jqueryajax来实现相同的结果,因为我具有更大的灵活性,可以将对象传递到操作中,而不是将所需的参数附加到查询字符串中。这可能吗?
如果是这样,ajax在这种情况下会返回什么
我正在使用asp.net MVC3您不能为此使用ajax。您应该使用iframe来创建一个类似于ajax的下载您无法使用ajax。您应该使用iframe创建一个类似于ajax的下载excel按钮是否可以在表单字段中填充变量,然后在没有ajax的情况下提交?只要内容类型设置为application/ms excel,它就会提示用户打开或保存文件(或浏览器的默认行为)
这就是我处理这个问题的基本方法,而且似乎工作得很好。excel按钮是否可以用变量填充表单字段,然后在没有ajax的情况下提交?只要内容类型设置为application/ms excel,它就会提示用户打开或保存文件(或浏览器的默认行为)
这就是我处理这个问题的基本方法,看起来效果不错。请详细说明“类似ajax的下载”是什么意思。请记住,我试图实现的目的是避免使用getstring。关键是,您无法将excel文件作为字节数组并使用javascript重新编译。如果使用隐藏的iframe,则可以隐藏参数。你也可以用post来做这件事。这件事纯粹是出于东方。用户看不到变量,因为url是由JS组成的。因此,iframe无法实现我试图实现的目标——将一个对象传递给动作,而不是一堆字符串。请详细说明“类似ajax的下载”是什么意思。请记住,我试图实现的目的是避免使用getstring。关键是,您无法将excel文件作为字节数组并使用javascript重新编译。如果使用隐藏的iframe,则可以隐藏参数。你也可以用post来做这件事。这件事纯粹是出于东方。用户看不到变量,因为url是由JS组成的。所以iframe无法实现我想要实现的目标-将一个对象传递给动作,而不是一堆字符串。谢谢。只有一件事需要澄清:内容类型是什么?ajax调用?您将执行传统的HTTP GET/POST,而不是ajax调用。确保您的响应的内容类型是application/ms excel(根据您的代码示例,它看起来是这样的),并且当浏览器收到响应时,它会提示用户下载文件。我不认为它必须下载。试试看,告诉我进展如何。谢谢。只有一件事需要澄清:内容类型是什么?ajax调用?您将执行传统的HTTP GET/POST,而不是ajax调用。确保您的响应的内容类型是application/ms excel(根据您的代码示例,它看起来是这样的),并且当浏览器收到响应时,它会提示用户下载文件。我不认为它必须下载。试试看,告诉我进展如何。