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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:25:05