.net mvc 4 application – 从ajax调用到控制器中的函数

我正在创建mvc 4应用程序,我使用ajax从js文件调用控制器中的函数。

当我从ajax调用函数时,它正确地调用相应的函数。 但成功和错误function都没有解雇。 有人可以帮我纠正我的错误吗?

我想从数据库读取数据将其转换为json格式并将其写入.js文件,然后将成功函数触发。 帮我解决这个问题。 提前致谢。

这是我的代码。

$.ajax({ //url: '@Url.Action("getJsonData","Home")', url: "Home/getJsonHugeData1", //data: "{}", type: "GET", //contentType: 'application/json', //dataType: "json", success: function () { alert(); alert('success getJsonHugeData'); loaddata(data); }, error:function(){ alert('error'); } }); 

控制器:

 public JsonResult getJsonHugeData() { var users = GetUsersHugeData(); string json = "var dataSource="; json += JsonConvert.SerializeObject(users.ToArray()); System.IO.File.WriteAllText(Server.MapPath("/Scripts/NewData.js"), json); return Json(users, JsonRequestBehavior.AllowGet); } private List GetUsersHugeData() { var usersList = new List(); UserModel user; List data = new List(); using (Database1Entities dataEntity = new Database1Entities()) { data = dataEntity.dummyDatas.ToList(); } for (int i = 0; i < data.Count; i++) { user = new UserModel { ID = data[i].Id, ProductName = data[i].ProductName, Revenue = data[i].Revenue, InYear = data[i].InYear.Year }; usersList.Add(user); } } 

我相信你的浏览器会阻止通过ajax下载的文件,这是因为JavaScript无法与磁盘进行交互。 如果你想让这个工作,你将不得不使用表格发布。

 @using (Html.BeginForm("Action", "Controller", FormMethod.Post, new { id = "DownloadForm" })) { ... form data would be here if you had any...  } 

然后,您将返回一个FileStreamResult,其中包含要下载的文件的内容。

 public ActionResult Action(FormModel model) { // Do work to get data for file and then return your file result to the browser. return new FileStreamResult(new MemoryStream(fileData), "text/csv") // set the document type that is valid for your file { FileDownloadName = "users.csv" }; } 

我运行了除以下代码之外的所有代码,因为您没有在您的问题中提供UserModel和dummydata类:

 private List GetUsersHugeData() { var usersList = new List(); UserModel user; List data = new List(); using (Database1Entities dataEntity = new Database1Entities()) { data = dataEntity.dummyDatas.ToList(); } for (int i = 0; i < data.Count; i++) { user = new UserModel { ID = data[i].Id, ProductName = data[i].ProductName, Revenue = data[i].Revenue, InYear = data[i].InYear.Year }; usersList.Add(user); } } 

最终的结果是你的ajax'url'参数中有一个拼写错误。 此外,如果要检查错误,请将function设置为

 function(jqxhr, status, error) { alert(error); } 

检查抛出的错误。