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