jQuery Ajax成功或失败方法命中

时间:2014-11-12 21:50:24

标签: javascript jquery ajax asp.net-mvc asp.net-mvc-5.2

我在下面的代码中有以下代码,当点击链接时,该代码应该调用控制器。控制器被成功调用,但javascript方面唯一被点击的方法是always,它显示弹出声明" undefined"。

添加链接方法

$('.retrieveTeam').click(function () {
        _getData($(this).data("teamkey"));
    });

jQuery AJAX Call

function _getData(postdata) {
    var request = $.ajax({
        url: 'RetrieveTeam',
        type: 'POST',
        data: JSON.stringify({ TeamKey: "331.l.542488.t.1" }),
        datatype: JSON,
        contentType: "application/json"
    });
    request.success = function (result) {
        alert(result);
    }
    request.error = function (result, xh) {
        alert("error");
    }
    request.fail = function () {
        alert("failure");
    }
    request.always = function (result) {
        alert(result);
    }
}

控制器

    [HttpPost]
    public JsonResult RetrieveTeam(string TeamKey)
    {
        List<Team> objTeams = (List<Team>)Session["Teams"];

        Team objTeam = objTeams.Where(x => x.TeamKey == TeamKey).FirstOrDefault();

        objTeam.AddPlayer(new FootballPlayer(new Position("QB", "QB", "QB"), "Brett Favre", "QB"));

        return Json(objTeam);
    }

1 个答案:

答案 0 :(得分:4)

您正在使用jQuery 2.1.1。阅读$.ajax的{​​{3}},我们可以看到:

  

jqXHR.success()jqXHR.error()jqXHR.complete()回调是   自jQuery 1.8起不推荐使用。准备最终的代码   移除,请改为使用jqXHR.done()jqXHR.fail()jqXHR.always()

在您的代码中,

request.success = ...

应替换为

request.done(...)

.fail =以及.error()。另外,修复您的dataType 这一切使我们得以:

function _getData(postdata) {
    $.ajax({
        url: 'RetrieveTeam',
        type: 'POST',
        data: JSON.stringify({ TeamKey: "331.l.542488.t.1" }),
        datatype: "json",
        contentType: "application/json"
    }).done(function (foo) {

    }).fail(function (foo) {

    }).always(function (foo) {

    });
}