JQuery Ajax Методы успеха ни Fail

Ниже приведен следующий код, который должен вызывать контроллер при нажатии на ссылку. Контроллер вызывается успешно, но единственный метод на стороне JavaScript, который ударил, always который отображает всплывающее окно с указанием "неопределенный".

Добавление метода для ссылки

$('.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 ответ

Решение

Вы используете jQuery 2.1.1. Чтение справочной страницы для $.ajax мы это видим:

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) {

    });
}
Другие вопросы по тегам