【问题标题】:Rails Autosave Forms with jQuery/AJAXRails 使用 jQuery/AJAX 自动保存表单
【发布时间】:2015-10-13 20:08:21
【问题描述】:

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

背景:我有一个表单,目前正在使用 Ruby on Rails 和 jQuery 创建/更新 ajax-ly。对于每个创建/更新操作,我需要每 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”即可。 非常感谢。

【问题讨论】:

  • 什么不起作用?
  • 嗨弗兰克,该网址无效。
  • 我想帮助你,但我需要更多信息。最好同时显示您看到的错误消息(检查浏览器的开发人员控制台)。此外,通过说明您已经尝试过的事情来解释您认为问题出在哪里也很好。如果您有更多信息,请更新您的原始帖子。
  • 谢谢弗兰克。我已经更新了问题描述。这是表单参数序列化的问题。有什么想法吗?

标签: jquery ruby-on-rails ajax forms autosave


【解决方案1】:

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

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

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

您输出的 HTML 是否在 <form> 中包含 <form> 标记?如果是这样,你只能使用外部形式来定位和保存。

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

【讨论】:

  • 用“form”替换“#report”并将长度> 1更改为> 0。正是你所说的。现在我有另一个问题 - 将自动保存与实际提交区分开来。有什么想法吗?
  • 不错!你能接受我的回答作为官方回答吗? :) 要知道提交的表单需要使用唯一的 id,例如form#firstform#second。你真的可以使用 cocoon 选择嵌套表单吗?
猜你喜欢
  • 1970-01-01
  • 2015-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多