【发布时间】:2023-03-23 11:50:02
【问题描述】:
问题:
- 我们是否应该按照以下建议更改编码?
-
.done()&success:、.fail()&error:和.always()&complete:有区别吗?
序言:
我正在整理一个 jQuery.ajax 调用,我过去也成功完成了该调用。像这样的:
$.ajax(
{
url: someUrl,
type: 'POST',
data: someData,
datatype: 'json',
success: function (data) { someSuccessFunction(data); },
error: function (jqXHR, textStatus, errorThrown) { someErrorFunction(); }
});
在快速浏览一些文档时,我发现了一个参考,指出从 jQuery 1.8 开始不推荐使用成功、错误和完成回调。要为最终删除代码做好准备,请改用 jqXHR.done()、jqXHR.fail() 和 jqXHR.always()。
因此,我们应该开始编写类似的代码:
$.ajax( "example.php" )
.done(function (data) { someSuccessFunction(data); })
.fail(function (jqXHR, textStatus, errorThrown) { someErrorFunction(); })
.always(function() { alert("complete"); });
【问题讨论】:
-
我更喜欢第二种方法...使用ajax返回的promise
-
回调没有被弃用。 jqxhr对象上的相关方法是。
-
我同意 Arun 的观点,我个人认为这更容易阅读
-
我不是在寻找 cmets 和关于偏好的陈述,但想了解其中的差异(如果有的话)。
-
对于那些不知道 jqxhr 对象是什么的人,Crazy Train 的意思是“回调没有被弃用。jqxhr 对象上的相关方法是。”是
.done()替换.success(),.fail()替换.error(),.always()替换.complete()。.success()、.error()和.complete()方法 不同于.ajax()的success、error和complete选项方法。
标签: javascript ajax jquery