C# MVC ajax不下载文件
这是调用控制器的ajax调用C# MVC ajax不下载文件,c#,jquery,ajax,asp.net-mvc,c#-4.0,C#,Jquery,Ajax,Asp.net Mvc,C# 4.0,这是调用控制器的ajax调用 @using(Html.BeginForm("ExportData", "ViewData", FormMethod.Post, new { id = "myform", name = "myform" })) { <button type = "submit"> Export Raw Policy </button> } <div id = "divProcessing"&
@using(Html.BeginForm("ExportData", "ViewData", FormMethod.Post,
new {
id = "myform", name = "myform"
})) {
<button type = "submit"> Export Raw Policy </button>
}
<div id = "divProcessing"> <img src = ~/assets/layouts/layout3/img/loading-spinner-blue.gif" > </p> </div>
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
<script type = "text/javascript" >
$(document)
.ready(function() {
// Hide the "busy" Gif at load:
$("#divProcessing").hide();
// Handle the form submit event, and make the Ajax request:
$("#myform")
.on("submit",
function(event) {
event.preventDefault();
// Show the "busy" Gif:
$("#divProcessing").show();
var url = $(this).attr("action");
var formData = $(this).serialize();
$.ajax({
url: url,
type: "POST",
data: formData,
dataType: "json",
contentType: 'application/json; charset=utf-8',
success: function(resp) {
// Hide the "busy" gif:
$("#divProcessing").hide();
// Do something useful with the data:
$("<h3></h3>")
.appendTo("#divResult");
}
})
});
}); </script>
}
上面的代码正在进行ajax调用并调用控制器。控制器正在将数据表下载到excel中
如果我在没有ajax调用的情况下调用控制器,那么它将下载excel文件,但当我进行ajax调用时,它不会下载excel文件
代码正在调用正确的控制器和操作,但没有下载文件
有人能告诉我这里出了什么问题吗。没有ajax,它工作得很好
任何帮助都将不胜感激
提前感谢。如果您将url返回到资源,将该url附加到下载链接并触发单击以开始下载,那么在ajax调用中重定向就再好不过了 从c#返回链接 在成功函数中创建链接
success: function(resp) {
$('body').append('<a class="hidden-download" href="'+resp+'" download>hidden<a>').trigger('click').hide();//append it to the body, trigger the click then hide/remove the link
成功:功能(resp){
$('body').append('hidden').trigger('click').hide();//将其附加到正文中,触发单击,然后隐藏/删除链接
如果您将url返回到资源,将该url附加到下载链接并触发单击以开始下载,那么在ajax调用中重定向就再好不过了
从c#返回链接
在成功函数中创建链接
success: function(resp) {
$('body').append('<a class="hidden-download" href="'+resp+'" download>hidden<a>').trigger('click').hide();//append it to the body, trigger the click then hide/remove the link
成功:功能(resp){
$('body').append('hidden').trigger('click').hide();//将其附加到正文中,触发单击,然后隐藏/删除链接
数据类型:您希望从服务器返回的数据类型。
在声明中声明了仅删除它。是的,我尝试了删除它,但仍然不起作用。我搜索了一点,正如@madalin所说,您无法使用ajax。ajax不允许您将文件下载到计算机。数据类型:可以删除的数据类型您正在等待服务器的回复。
在声明中声明,只需删除它。是的,我尝试删除它,但仍然不起作用。我搜索了一点,正如@madalin所说,您无法使用ajax。ajax不允许您将文件下载到您的计算机。问题是我没有任何下载链接。我正在创建一个数据表并传递将其导出到excel函数,该函数正在下载文件。因此,我应该将datatable从controller传递到ajax success,然后我应该将该datatable传递回controller以调用导出到excel方法?据我所知,ExportToExcel正在使用datatable创建一个页面,使用生成页面的url我不能在HttpContext.Current.Response.create a route to ExportToExcel在ExportDatasorry中返回该路由我对mvc不熟悉创建路由是什么意思?问题是我没有任何下载链接。我正在创建一个数据表并将其传递给正在下载文件的excel函数。因此我应该传递数据表e从controller到ajax成功,然后我应该将该数据表传递回controller以调用导出到excel方法?据我所知,ExportToExcel正在使用数据表创建页面,请使用生成页面的url。我在HttpContext.Current.Response中找不到任何url。创建到ExportToExcel的路由返回该路由ExportDatasorry我是mvc新手,创建路由是什么意思?
return LinkToAction("Index");// don't know the syntax here sorry
success: function(resp) {
$('body').append('<a class="hidden-download" href="'+resp+'" download>hidden<a>').trigger('click').hide();//append it to the body, trigger the click then hide/remove the link