0
私はユーザーがドロップダウンリストの1つの値を変更した場合、フォームのいくつかのコントロールを変更する必要があるフォームを持っています。それは現在...ドロップダウン・リスト変化にRailsでは、AJAX関数を呼び出して、ページが完了したらページを更新する方法は?
- を設定するの道、新しい値でフォームを保存するためのAJAX呼び出しを実行
- 「更新」の方法は私のオブジェクト上で実行する前に、私は削除マークAJAXの
success
機能で - を変更された新しい値に関係しないフィールドには、現在の問題は、自動保存の方法が完了する前にリロードが生じることがあるということです、それは
location.reload()
を実行呼び出します。自動保存が完全に完了するまでページをリロードするにはどうすればよいですか? $.ajax
にasync: false
を設定したくないのは、ユーザーにメッセージを表示してから待ってもらう前に、ページ全体がフリーズするためです。ありがとうございました!ありがとうございました!
reports.coffee
autoSavePost = (reload) ->
console.log('autosave executed');
$.ajax
type: 'PUT'
url: '/reports/autosave'
data: $('#report-form').serialize()
dataType: 'script'
success: (data) ->
if reload
setTimeout(location.reload(), 5000);
return true
error: (xhr, ajaxOptions, thrownError) ->
console.log xhr.responseText.substr(0,1500)
return false
# schedule the next autosave
if $('#auto-save').length
setTimeout autoSavePost, 60000
else
return false
return
$ ->
$(document).on 'change', '#report_position_id', (evt) ->
$.blockUI({ message: '<h5>Please wait, "Position Graded" is being changed...</h5>' });
# grey out screen with message until page reloads.
autoSavePost(true)
return
ないのはなぜ成功が完了する前に「location.reload()が」発射されていますが、その成功の次の自動保存をスケジュールする必要がありますを確認します。
や頭をレンダリングコールバックはリクエストがスタックしないようにします。 – mnort9
@ mnort9、ありがとう!良い電話 – daveomcd