2015-10-13 67 views
2

我知道這個問題已經被問了好幾次了,但是我找不到能完美解決我的問題的帖子。使用jQuery/AJAX的Rails自動保存表格

背景:我有一個當前正在使用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」替換爲「form」將會執行。 非常感謝。

+0

什麼不起作用? – sourcx

+0

嗨,弗蘭克,網址無效。 – LOCKLOCK

+0

我想幫助您,但我需要更多信息。同時顯示您看到的錯誤消息也是很好的做法(檢查瀏覽器的開發人員控制檯)。另外,通過陳述您已經嘗試過的事情,很好地解釋您認爲問題出在哪裏。如果您有更多的信息,請更新您的原始帖子。 – sourcx

回答

1

感謝您更新您的問題。雖然我覺得你的代碼從來沒有執行過,因爲這個檢查($("#report").length > 1)(簡單地刪除> 1部分讓它工作),但真正的問題是表單的嵌套。

由於嵌套表單無效(請參閱Is it valid to have a html form inside another html form?),因此無法定位另一表單中包含的表單。

我再次證實了在這裏https://jsfiddle.net/2tuo3yhv

請問您輸出HTML包含在一個<form>標籤<form>?如果是這樣,您只能使用外部表單進行定位和保存。

祝你好運,讓我知道你是否可以通過這種方式解決你的問題!

+0

感謝它的工作。 – LOCKLOCK

+0

有什麼竅門? – sourcx

+0

將「#report」替換爲「form」,並將長度> 1更改爲> 0.正是您所說的。現在我有另一個問題 - 用實際提交區分自動保存。有什麼想法嗎? – LOCKLOCK