我正在创建mvc 4应用程序,我使用ajax从js文件中调用控制器中的函数。
当我从ajax调用该函数时,它正确地调用相应的函数。但是成功和错误功能都没有解雇。有人可以帮我解决我的错误吗?
我想从数据库中读取数据,将其转换为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<UserModel> GetUsersHugeData()
{
var usersList = new List<UserModel>();
UserModel user;
List<dummyData> data = new List<dummyData>();
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);
}
}
答案 0 :(得分:0)
我相信你的浏览器会阻止通过ajax下载的文件,这是因为JavaScript无法与磁盘进行交互。如果你想让这个工作,你将不得不使用表格发布。
@using (Html.BeginForm("Action", "Controller", FormMethod.Post, new { id = "DownloadForm" }))
{
... form data would be here if you had any...
<button type="submit">Download</button>
}
然后,您将返回一个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"
};
}
答案 1 :(得分:0)
我运行了除了以下代码之外的所有代码,因为你没有在你的问题中提供UserModel和dummydata类:
setAlarm
最终结果是你的ajax'url'参数中有一个拼写错误。此外,如果要检查错误,请将功能设置为
private List<UserModel> GetUsersHugeData()
{
var usersList = new List<UserModel>();
UserModel user;
List<dummyData> data = new List<dummyData>();
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);
}
}
检查抛出的错误。