JQuery函数只是在第一次按下提交按钮时调用控制器动作

时间:2016-07-08 04:16:27

标签: javascript jquery asp.net-mvc razor

我有一个名为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);
}

2 个答案:

答案 0 :(得分:1)

在这种第一次工作的情况下,我假设存在缓存问题。要强制绕过缓存,可以将选项添加到ajax请求。有关更多信息,请查看jquery ajax documentation

&#13;
&#13;
$.ajax({
        type: "get",
        url: "/Students/GetStudents",
        cache: false
    }).success(function (result) {
        $("#divGetStudents").html(result)
    })
&#13;
&#13;
&#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)
    })
}