碰到一個問題是
form submit 之後還需要執行一個javascript
本來很簡單的直接用
<%= simple_form_for [@goal ,@schedule] ,:html => { :id => 'event_form' }, :remote => true do |f| %>
<div>
<%= f.input :title %>
<%= f.input :description %>
<%= f.button :submit , :class => "btn btn-success" ,:onclick => "refetch_events_and_close_dialog()" %>
</div>
<% end %>
:remote => true ajax
:onclick => "refetch_events_and_close_dialog()" submit後直接呼叫我要叫的javascript function
我的refetch_events_and_close_dialog 是要refresh 一些資料
剛好是這個submit更新完後的資料
但卻不可行refresh的資料還是舊的
我猜測大概是submit 和我onclick是同時的 所以導致我refresh的是還沒更新的資料
因此就改成
$(document).ready(function(){
$('#desc_dialog').on('submit', "#event_form", function(event) {
event.preventDefault();
$.ajax({
type: "POST",
data: $(this).serialize(),
url: $(this).attr('action'),
success: refetch_events_and_close_dialog,
error: handle_error
});
function handle_error(xhr) {
alert(xhr.responseText);
}
});
});
在
$(document).ready就定義說#event_form這個如果submit的話
所觸發的function
用ajax成功後執行refetch_events_and_close_dialog