语法错误求助:success is not a function问题及代码排查
解决jQuery Ajax中"success is not a function"的报错问题
嘿,这个问题我之前踩过坑——核心原因是jQuery版本的兼容性问题!
你遇到的success is not a function错误,是因为从jQuery 3.0版本开始,官方废弃并移除了.success()、.error()、.complete()这类链式回调方法,转而推荐使用Promise风格的.done()、.fail()、.always(),或者直接将回调函数写在$.ajax的配置参数里。
GitHub上的示例代码大概率是基于旧版本jQuery(比如1.x或2.x)编写的,所以当时.success()是合法的语法,但放到新版本jQuery环境里就会报错。
给你两个可行的修复方案:
方案1:改用Promise风格的.done()替代.success()
$.ajax({ url: '{{ route('braintree.token') }}' }).done(function (response) { braintree.setup(response.data.token, 'dropin', { container: 'dropin-container', onReady: function () { $('#payment-button').removeClass('hidden'); } }); });
方案2:将success回调直接写入$.ajax配置对象
这是兼容性更广的写法,无论新旧jQuery版本都能正常工作:
$.ajax({ url: '{{ route('braintree.token') }}', success: function (response) { braintree.setup(response.data.token, 'dropin', { container: 'dropin-container', onReady: function () { $('#payment-button').removeClass('hidden'); } }); } });
你可以先检查下项目中引入的jQuery版本,如果是3.0及以上,用上面任意一种方案都能解决问题。
内容的提问来源于stack exchange,提问作者Филип Стојановић
相关产品推荐
相关产品推荐

