gpt4 book ai didi

javascript - jQuery Ajax Success 或 Fail 方法命中

转载 作者:行者123 更新时间:2023-11-30 10:10:36 24 4
gpt4 key购买 nike

下面的代码应该在单击链接时调用 Controller 。 Controller 被成功调用,但 javascript 端唯一被命中的方法是 always,它显示一个弹出窗口,说明“未定义”。

将方法添加到链接

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

jQuery AJAX 调用

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

Controller

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

最佳答案

您正在使用 jQuery 2.1.1。读书the manual page对于 $.ajax 我们可以看到:

The jqXHR.success(), jqXHR.error(), and jqXHR.complete() callbacks are deprecated as of jQuery 1.8. To prepare your code for their eventual removal, use jqXHR.done(), jqXHR.fail(), and jqXHR.always() instead.

在你的代码中,

request.success = ...

应替换为

request.done(...)

.fail = 以及 .error()。此外,修复您的数据类型。
总而言之,这将我们带到:

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

});
}

关于javascript - jQuery Ajax Success 或 Fail 方法命中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26897312/

24 4 0