javascript - 在 Rails 中提交表单,无需重新加载页面

标签 javascript ruby-on-rails ruby page-refresh preventdefault

我在提交表单时遇到阻止页面重新加载的问题。

我的 HTML:

<%= form_for @foo, html: {multipart: true}, remote: true do |f| %>
   <%= f.check_box :bar, :id => "bar_id", :onchange => "submit_function(this.form)" %>
<% end %>

我的 JavaScript:

function submit_function(form){
    form.submit(function (ev) {
        ev.preventDefault();
    });
}

我的 Controller :

def update

   // awesome things for update

   respond_to do |format|
     format.html { redirect_to request.referrer }
     format.js {}
   end
end

单击复选框时,将触发 JavaScript。 “form.submit”将表单发送到 Controller ,但在这种情况下,整个页面都会重新加载。我想阻止这种重新加载。

我也尝试过这个,但是页面也会重新加载。

function submit_function(form){
  form.submit(function () {
    $.ajax({
        type: this.method,
        url: this.action,
        data: $(this).serialize()
    });
    return false;
  });
}

是否需要之前更改“提交功能”,还是通过按下复选框来更改?

我现在已经尝试了一些东西。现在邀请页面不再是新的,但模型已更新。

function submit_function(form) {

  $.ajax({
    type: form.method,
    url: form.action,
    data: $(form).serialize()
  });

  return false;
}

现在我在更新已更改的部分时遇到问题。我怎样才能用js做到这一点?

好的,我明白了。请求将在js中发送,不再触发页面重新加载。我使用 javascript 编辑了复选框。

最佳答案

似乎和这个情况很相似:AJAX rails check box using javascript .submit()

他们所做的是重新定义表单提交,改变行为。

作为基本建议:使用相当不引人注目的 JS 而不是内联 onchange 事件

关于javascript - 在 Rails 中提交表单,无需重新加载页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32971329/

相关文章:

javascript - 失败的 Prop 类型 Prop 被标记为必需但其值为 `undefined`

ruby-on-rails - Ruby 遍历 CSV 行并绕过值

javascript - 脚本导致链接调用服务器两次

ruby-on-rails - 如何配置 RSpec 以在 lib 文件夹中查找规范?

ruby-on-rails - 在文本变量中使用/n 添加新行

javascript - CSS 切换按钮不正确的逻辑

javascript - 使用 Javascript 进行实时基本 Web 分析

javascript 使用 setInterval 打开和关闭多个 url

ruby-on-rails - 升级到 Rails 4 后 postgresql 服务器上的内存泄漏

ruby-on-rails - 使用Nokogiri将<img src/>标签替换为<%= image_tag %>?