You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何更新.complete()以兼容jQuery 3(原适配jQuery 1.9)

解决jQuery 3中$.getJSON().complete()的兼容问题

看到你遇到的TypeError: undefined is not a function报错,就知道是jQuery 3的AJAX方法迭代导致的问题——jQuery 3彻底移除了旧的.complete()方法,而这个方法在jQuery 1.8之后就已经被标记为废弃了。咱们直接用.always()来替代它就行,作用完全一致,改动还最小!

具体修改步骤

把你原来的代码:

$.getJSON(url,function(data){ 
  // 你的业务逻辑代码
}).complete(function(){ 
  // 原来需要在请求完成后执行的代码
}); 

直接替换成:

$.getJSON(url,function(data){ 
  // 你的业务逻辑代码
}).always(function(){ 
  // 把原来complete里的代码原封不动挪到这里
}); 

为什么这个改动有效?

在jQuery从1.9到3.x的版本迭代中,AJAX模块做了标准化调整:

  • 旧的.success()、.error()、.complete()这三个方法被逐步废弃,最终在jQuery 3中被完全移除
  • 官方推荐使用符合Promise规范的方法来替代:
    • .done():处理AJAX请求成功的回调
    • .fail():处理AJAX请求失败的回调
    • .always():无论请求成功或失败,都会执行的回调(完全等价于旧的.complete())

这样修改后,你的插件不仅能在jQuery 3环境下正常运行,还能向下兼容到jQuery 1.8及以上的版本,完美适配你的需求。

如果之后你想更贴合现代JavaScript的Promise写法,也可以用.then()来结合成功和失败回调,但.always()是最直接替换.complete()的方案,几乎不需要改动原有逻辑。

内容的提问来源于stack exchange,提问作者Sébastien Gicquel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 10:07:05