Javascript 如何从Rails 5.1中的事件ajax:error的响应中获取数据
我正在轨道上建造一个模板。我想通过ajax提交它,所以我设置了Javascript 如何从Rails 5.1中的事件ajax:error的响应中获取数据,javascript,jquery,ruby-on-rails,ajax,Javascript,Jquery,Ruby On Rails,Ajax,我正在轨道上建造一个模板。我想通过ajax提交它,所以我设置了remote:true <%= form_for @post, html: { multipart: true }, remote: true do |f| %> ... <%= end %> 在形式上 $('#new_post').on('ajax:success', function(data) { console.log(data); }).on('ajax:error', funct
remote:true
<%= form_for @post, html: { multipart: true }, remote: true do |f| %>
...
<%= end %>
在形式上
$('#new_post').on('ajax:success', function(data) {
console.log(data);
}).on('ajax:error', function(evt, xhr, status, error) {
console.log(xhr);
});
但在“ajax:error”事件中,我无法解析以获取有关post验证错误的数据。所有参数“xhr”、“status”、“error”都等于未定义
如何解析“ajax:error”中的响应以获取有关验证错误的数据?Rails 5.1引入了
Rails ujs
,它更改了这些事件处理程序的参数。以下方面应起作用:
// ...
.on('ajax:error', function(event) {
var detail = event.detail;
var data = detail[0], status = detail[1], xhr = detail[2];
// ...
});
来源:这在5.2版中仍然有效吗?当我在ajax:success和ajax:error回调中查看Chrome DevTools中的event.detail时,我感到“未定义”。但是,我可以访问xhr、数据和状态,结果我仍然使用jquery_ujs而不是rails ujs。现在没事了。
// ...
.on('ajax:error', function(event) {
var detail = event.detail;
var data = detail[0], status = detail[1], xhr = detail[2];
// ...
});