我有一个名为InsertShowStudents()
的JQuery函数,每次按下提交按钮()时都会正确执行。成功之后,我调用另一个函数GetStudents()
来显示表中更新的元素列表。 GetStudents()
函数只在第一次按下按钮时调用控制器操作。之后,InsertShowStudents()
继续插入表中,但GetStudents()
函数没有调用控制器上的Action方法..我已经使用断点来证明它,你知道吗?发生了什么?
JQuery代码:
$(function () {
$("#btnInsertStudent").click(function () {
InsertShowStudents();
return false;
})
})
function InsertShowStudents() {
$.ajax({
type:"post",
url: "/Students/InsertStudent/",
data: { Name: $("#Name").val(), LastName: $("#LastName").val(), Age: $("#Age").val() }
}).success(function () {
GetStudents();
//clear the form
$("#myform")[0].reset();
}).error(function () {
$("#divGetStudents").html("An error occurred")
})
}
function GetStudents()
{
$.ajax({
type: "get",
url: "/Students/GetStudents"
}).success(function (result) {
$("#divGetStudents").html(result)
})
}
控制器操作:
public ActionResult InsertStudent()
{
return View();
}
[HttpPost]
//[ValidateAntiForgeryToken]
public ActionResult InsertStudent(Student student)
{
if (ModelState.IsValid)
{
db.Students.Add(student);
db.SaveChanges();
return View();
}
return View(student);
}
public PartialViewResult GetStudents()
{
List<Student> students = db.Students.ToList();
return PartialView(students);
}
答案 0 :(得分:1)
在这种第一次工作的情况下,我假设存在缓存问题。要强制绕过缓存,可以将选项添加到ajax请求。有关更多信息,请查看jquery ajax documentation
$.ajax({
type: "get",
url: "/Students/GetStudents",
cache: false
}).success(function (result) {
$("#divGetStudents").html(result)
})
&#13;
答案 1 :(得分:0)
试试这个
function InsertShowStudents() {
$.ajax({
type:"post",
url: "/Students/InsertStudent/",
data: { Name: $("#Name").val(), LastName: $("#LastName").val(), Age: $("#Age").val() }
}).done(function () {
GetStudents();
//clear the form
$("#myform")[0].reset();
}).fail(function () {
$("#divGetStudents").html("An error occurred")
})
}
function GetStudents()
{
$.ajax({
type: "get",
url: "/Students/GetStudents"
}).done(function (result) {
$("#divGetStudents").html(result)
})
}