我知道这个问题已被问过几次,但我找不到一篇能完美解决我问题的帖子。
背景:我有一个目前正在使用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”即可。 非常感谢。
答案 0 :(得分:1)
感谢您更新问题。虽然我觉得你的代码永远不会被执行因为这个检查($("#report").length > 1)
(只需删除> 1
部分就可以了),真正的问题是表单的嵌套。
由于嵌套表单无效(请参阅Is it valid to have a html form inside another html form?),因此您无法定位其他表单中包含的表单。
我在这里再次确认https://jsfiddle.net/2tuo3yhv
您输出的HTML是否在<form>
中包含<form>
标记?如果是这样,您只能使用外部表单进行定位和保存。
祝你好运,如果你能以这种方式解决问题,请告诉我!