Rails Ajax:beforeSend事件参数未定义,无法修改发送数据?
解决Rails 5.1.3中
ajax:beforeSend事件xhr/settings参数undefined的问题 这个坑我刚升级Rails 5.1的时候也踩过!核心原因是Rails 5.1开始把原来的jquery-ujs替换成了rails-ujs,AJAX事件的参数传递逻辑变了。
在老版本的jquery-ujs里,ajax:beforeSend确实会把xhr和settings作为额外参数直接传给回调函数,但rails-ujs把所有AJAX相关的额外数据都封装到了事件对象的detail属性里,不再单独传递参数。
你只需要修改JavaScript代码,从event.detail里取出这两个参数就行:
$('#save').on('ajax:beforeSend', function (event) { const { xhr, settings } = event.detail; console.log(xhr); // 现在能正常输出xhr对象了 console.log(settings); // settings参数也能正确获取 });
简单来说就是rails-ujs重构了事件触发逻辑,所有原来的额外参数都统一放在event.detail里,这是版本升级带来的兼容性变化,不少刚升级的开发者都会碰到这个问题。
内容的提问来源于stack exchange,提问作者Run
相关产品推荐
相关产品推荐

