jquery - Rails 远程表单不触发 ajax :success handler

标签 jquery ruby-on-rails ajax forms

这是我对表单的看法:

#popupBox
  %h1 Change Password
  %p Update password for user: #{@user.email}.
  #formHolder
    = simple_form_for @user, url: update_password_user_path, html: { class: 'remote-form' }, remote: true do |f|
      = f.input :password, required: true

      = f.button :submit, 'Update Password'

这是 Controller 代码:

def update_password
  @user = User.find(params[:id])
  if @user.update(update_password_params)
    render layout: false # This shows a nice "Completed" message for the user.
  else
    render action: 'edit_password', layout: false
  end
end

还有我的 JavaScript 代码:

$(document).ready ->
  $("form.remote-form").on("ajax:success", (e, data, status, xhr) ->
    console.log("Working")
    $("form.remote-form").append xhr.responseText
  ).on "ajax:error", (e, xhr, status, error) ->
    console.log("Not working")
    $("form.remote-form").append "<p>ERROR</p>"

当我提交表单时,会触发 AJAX 帖子(在我的开发工具中看到),但 console.log 调用都不会触发。

如何检测表单何时通过 AJAX 提交,并将 Controller 代码的结果放置在 dom 中的表单位置内?

最佳答案

在 Controller 中添加 json 响应:

  def update_password
    @user = User.find(params[:id])

    respond_to do |format|
      if @user.update(update_password_params)
        format.json { render json: @user, status: :updated }
      else
        format.json { render json: @user.errors, status: :unprocessable_entity }
      end
    end
  end

关于jquery - Rails 远程表单不触发 ajax :success handler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22759060/

相关文章:

php - 在一页中绘制多个 flot

javascript - 为什么我在以下 JavaScript 代码中收到 XMLHTTPRequest 错误?

php - 如何将 jQuery 回调函数的值传递给 PHP 脚本以进行进一步验证?

ruby-on-rails - Rails 重定向到另一个 Controller 的 show 方法

jquery - 如何阻止查看器在网页上水平滚动?

ruby-on-rails - rails : storing datatype in a column?

ruby-on-rails - URL参数中的嵌套数组

javascript - 如何使用 jquery ajax 和 php 上传文件(无需单击任何提交按钮)

jQuery 淡入淡出速度效果只工作一次

javascript - 将内容插入到第一个选择器