Rails 使用 jQuery/AJAX 自动保存表格

Rails Autosave Forms with jQuery/AJAX

我知道这个问题已经被问过好几次了,但我找不到一个 post 可以完美解决我的问题。

背景:我有一个表格,目前正在 created/updated ajax-ly 在 Rails 和 jQuery 上使用 Ruby。对于每个 create/update 操作,我需要每 30 秒自动保存一次表单内容。现在,我专注于使自动保存创建表单起作用。

我有如下内容:

#controller method
def create
  @report = Report.create(params)
end

#js
$(function() {
  if ($("#report").length > 1) {
    setTimeout(autoSaveForm, 30000);
  }
});

function autoSaveForm() {
  $.ajax({
    type: "POST",
    url: "report/create",
    data: $("#report").serialize(),
    dataType: "script",
    success: function(data) {
      console.log(data);
    }
  });
  setTimeout(autoSaveForm, 30000);
}

更新:经过仔细检查,$("#report").serialize() 无法正常工作。它没有捕获表单内容。我正在使用 cocoon 生成两层嵌套表单。我需要正确序列化表单内容。

更新:将“#report”替换为 "form" 即可。 非常感谢。

感谢您更新您的问题。虽然我觉得你的代码因为这个检查 ($("#report").length > 1) 而永远不会执行(只需删除 > 1 部分就可以工作),但真正的问题是表格的嵌套。

因为嵌套表单无效(请参阅 Is it valid to have a html form inside another html form?),您无法定位包含在另一个表单中的表单。

我在这里再次确认了https://jsfiddle.net/2tuo3yhv

您输出的 HTML 是否包含 <form> 中的 <form> 标签?如果是这样,就只能用外层形式定位保存了。

祝你好运,如果你能用这种方法解决你的问题,请告诉我!