找回密码
 立即注册
搜索
查看: 266|回复: 0

[基础语法] ajax done fail always

[复制链接]

581

主题

110

回帖

4066

积分

管理员

积分
4066

众神之神

发表于 2025-11-25 08:16:09 | 显示全部楼层 |阅读模式
在AJAX编程中,使用done, fail, 和 always方法是jQuery中非常常用的模式,用以处理异步请求的成功、失败和无论成功或失败都会执行的情况。这些方法通常与$.ajax或$.get, $.post等方法一起使用。

使用done
done(function(data, textStatus, jqXHR)方法用于处理AJAX请求成功完成的情况。

示例:
  1. $.ajax({
  2.     url: "example.php",
  3.     type: "GET",
  4.     dataType: "json"
  5. })
  6. .done(function(data, textStatus, jqXHR) {
  7.     console.log("成功: ", data);
  8. })
  9. .fail(function(jqXHR, textStatus, errorThrown) {
  10.     console.log("错误: ", textStatus, errorThrown);
  11. })
  12. .always(function() {
  13.     console.log("请求完成");
  14. });
复制代码


使用fail
fail(function(jqXHR, textStatus, errorThrown)方法用于处理AJAX请求失败的情况。这包括网络错误、超时、或服务器返回的错误状态码。

示例:
  1. .fail(function(jqXHR, textStatus, errorThrown) {
  2.     console.log("请求失败: ", textStatus, errorThrown);
  3. });
复制代码


使用always
always(function()方法无论AJAX请求成功还是失败都会执行。这通常用于清理工作,比如禁用加载指示器或重置表单。

示例:
  1. .always(function() {
  2.     console.log("请求完成,无论成功或失败");
  3.     // 例如,禁用加载指示器或重置表单状态等
  4. });
复制代码


完整示例:
结合使用这三个方法可以有效地管理AJAX请求的整个生命周期。
  1. $.ajax({
  2.     url: "example.php",
  3.     type: "GET",
  4.     dataType: "json"
  5. })
  6. .done(function(data) {
  7.     console.log("成功获取数据: ", data);
  8. })
  9. .fail(function(jqXHR, textStatus, errorThrown) {
  10.     console.log("请求失败: ", textStatus, errorThrown);
  11. })
  12. .always(function() {
  13.     console.log("请求完成");
  14. });
复制代码


注意事项:
确保你的服务器端脚本返回正确的响应格式,例如在上面的例子中,我们期望JSON格式的响应。如果不是JSON,你需要调整dataType参数。
检查网络问题、跨域请求(CORS)问题和服务器端的错误响应代码,这些都可能导致请求失败。
使用jqXHR对象可以访问到更多的关于请求的信息,例如状态码等。在fail函数中,你可以通过jqXHR.status获取HTTP状态码。
在实际开发中,根据需要选择性地使用这些方法,不一定每个请求都需要使用always方法,除非有特定的后续操作需要在请求完成后执行。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|十三博客 ( 鲁ICP备2023000528号 )

GMT+8, 2026-6-1 16:16 , Processed in 0.149198 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表