javascript - 如何从事件 ajax :error in Rails 5. 1 的响应中获取数据

标签 javascript jquery ruby-on-rails ajax

我正在用 Rails 构建一个表单。我想通过ajax提交,所以我设置了remote: true

<%= form_for @post, html: { multipart: true }, remote: true  do |f| %>
    ...
<%= end %>

在我的 Controller 中:

def create
    @post = Post.new(post_param)

    respond_to do |format|
       if @post.save
          format.html { redirect_to @post, notice: 'Post was successfully created.' }
          format.json { render :show, status: :created, location: @post }
       else
          format.html { render json: @post.errors, status: 400 }
          format.json { render json: @post.errors, status: 400 }
      end
    end
end

在 View 中的形式

$('#new_post').on('ajax:success', function(data) {
    console.log(data);
}).on('ajax:error', function(evt, xhr, status, error) {
    console.log(xhr);
});

但在“ajax:error”事件中,我无法解析以获取有关帖子验证错误的数据。所有参数 '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];
    // ...
});

来源:http://edgeguides.rubyonrails.org/working_with_javascript_in_rails.html#rails-ujs-event-handlers

关于javascript - 如何从事件 ajax :error in Rails 5. 1 的响应中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43827441/

相关文章:

javascript - 令人困惑的 webpack/ES6 项目设置

javascript - 使用 requireJs 在 Jasmine 中模拟匿名模块调用

javascript - 防止后退按钮上的 hashchange

ruby-on-rails - 如何运行或设置 rails3?

ruby-on-rails - 语法错误,意外 ':',期待 $end

javascript - BlueImp jQuery 文件上传到 Imgur

javascript - 如何计算定义为 'height=auto'的div的高度

javascript - 如何使用javascript从数组对象中获取所有值?

javascript:带有特殊字符的alt属性

ruby-on-rails - Rails 覆盖验证器消息