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>
标签?如果是这样,就只能用外层形式定位保存了。
祝你好运,如果你能用这种方法解决你的问题,请告诉我!
我知道这个问题已经被问过好几次了,但我找不到一个 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>
标签?如果是这样,就只能用外层形式定位保存了。
祝你好运,如果你能用这种方法解决你的问题,请告诉我!