我知道这个问题已被问过多次,但我找不到一篇文章可以完美解决我的问题。
背景:我有一个表单,当前正在使用 Ruby on Rails 和 jQuery 创建/更新 ajax。我需要为每个创建/更新操作每 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>
?如果是这样,就只能使用外层形式来定位并保存了。
祝你好运,如果你能通过这种方式解决你的问题,请告诉我!
关于jquery - Rails 使用 jQuery/AJAX 自动保存表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33111704/