如何在 MVC 中的 JQuery AJAX 调用期间将数据从控制器传递到视图?
How to pass data from a controller to view during a JQuery AJAX call in MVC?
在我看来,我有一个 AJAX 调用,它向我的控制器发送一个 id 参数。这一点工作正常。在我的控制器中,我计划使用该 ID 查询数据库,提取相关数据并希望将其发送回 AJAX call/view。这是我正在努力解决的问题,因为我是 AJAX 电话的新手。
var chosenSchoolID = $("#SelectedSchoolId").val();
$.ajax({
url: "/Home/GetSchoolDetailsAJAX",
type: "POST",
data: {
schoolID: chosenSchoolID
},
dataType: "text",
success: function(data) {
if (data == "success") {
}
},
error: function(data) {
if (data == "failed")
alert("An error has occured!");
}
});
以上是我的 AJAX 调用,这确实命中了我的控制器方法。但是在我的控制器中,我现在想发回其他字符串数据,但我不确定如何执行此操作(目前只是占位符代码)
[HttpPost]
public ActionResult GetSchoolDetailsAjax(string schoolID)
{
// query database using schoolID
// now we have other data such as:
string SchoolName = "";
string SchoolAddress = "";
string SchoolCity = "";
return null;
}
我必须在我的 Jquery 中声明变量并传递到 AJAX 调用的数据参数中以便传递值吗?
非常感谢
执行此操作的最简单方法是 return 使用控制器中的 return Json()
从数据库检索的实体。
请注意,检索数据时应发出 GET 请求,而不是 POST。此外,默认的 MVC 配置应该具有路由设置,以允许您在 URL 中提供所需资源的 id
。因此,试试这个:
$.ajax({
url: "/Home/GetSchoolDetailsAJAX/" + $("#SelectedSchoolId").val(),
type: "get",
success: function(school) {
console.log(school);
},
error: function() {
alert("An error has occured!");
}
});
[HttpGet]
public ActionResult GetSchoolDetailsAjax(string id) {
var school = _yourDatabaseContext.Schools.Single(s => s.Id == id); // assuming EF
return Json(school);
}
如果您想在没有数据库集成的情况下进行测试,请修改以下行:
var school = new {
Id = id,
Name = "Hogwarts",
Address = "Street, City, Country"
};
在我看来,我有一个 AJAX 调用,它向我的控制器发送一个 id 参数。这一点工作正常。在我的控制器中,我计划使用该 ID 查询数据库,提取相关数据并希望将其发送回 AJAX call/view。这是我正在努力解决的问题,因为我是 AJAX 电话的新手。
var chosenSchoolID = $("#SelectedSchoolId").val();
$.ajax({
url: "/Home/GetSchoolDetailsAJAX",
type: "POST",
data: {
schoolID: chosenSchoolID
},
dataType: "text",
success: function(data) {
if (data == "success") {
}
},
error: function(data) {
if (data == "failed")
alert("An error has occured!");
}
});
以上是我的 AJAX 调用,这确实命中了我的控制器方法。但是在我的控制器中,我现在想发回其他字符串数据,但我不确定如何执行此操作(目前只是占位符代码)
[HttpPost]
public ActionResult GetSchoolDetailsAjax(string schoolID)
{
// query database using schoolID
// now we have other data such as:
string SchoolName = "";
string SchoolAddress = "";
string SchoolCity = "";
return null;
}
我必须在我的 Jquery 中声明变量并传递到 AJAX 调用的数据参数中以便传递值吗?
非常感谢
执行此操作的最简单方法是 return 使用控制器中的 return Json()
从数据库检索的实体。
请注意,检索数据时应发出 GET 请求,而不是 POST。此外,默认的 MVC 配置应该具有路由设置,以允许您在 URL 中提供所需资源的 id
。因此,试试这个:
$.ajax({
url: "/Home/GetSchoolDetailsAJAX/" + $("#SelectedSchoolId").val(),
type: "get",
success: function(school) {
console.log(school);
},
error: function() {
alert("An error has occured!");
}
});
[HttpGet]
public ActionResult GetSchoolDetailsAjax(string id) {
var school = _yourDatabaseContext.Schools.Single(s => s.Id == id); // assuming EF
return Json(school);
}
如果您想在没有数据库集成的情况下进行测试,请修改以下行:
var school = new {
Id = id,
Name = "Hogwarts",
Address = "Street, City, Country"
};