Asp.net mvc 3 关于使用jquery ajax返回excel文件的建议

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按钮。当前,当用户按下GET EXCEL按钮时,一个js脚本从字段收集数据,编造一个指向动作控制器的url:

在js中:

$("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(根据您的代码示例,它看起来是这样的),并且当浏览器收到响应时,它会提示用户下载文件。我不认为它必须下载。试试看,告诉我进展如何。