我有一個基本的表單,當提交時,觸發一個創建請求到外部API。在提交時,會出現一個包含進度條的階段值,而不是提交按鈕。創建過程需要花費時間在外部API上,因此我必須每秒使用while status == 'inactive'
運行一些Show請求,並在顯示請求響應爲status: 'active'
時停止。 每個Show請求響應還包含一個'stage'
屬性,該屬性顯示創建過程的階段(連接,創建,獲取,整理等)。對於每個請求,當前階段都存儲在@stage變量中,可以使用ApiRequest.stage
訪問該變量。每個API相關的東西都在一個服務文件中。Rails - 用動態變量修改%p的文本
我的CoffeeScript與舞臺+進度條更改提交按鈕:
$('#new_connection').on 'submit', ->
button = $('#submit_button')
progress = $('.loading')
button.fadeOut 500
setTimeout (->
if button.is(':hidden')
progress.fadeIn 500
return
), 509
return
和部分舞臺+進度條:
.loading
%p.center-align#stage <!-- This should display the stage in real time -->
.progress <!-- This is a materializecss progress bar -->
.indeterminate
如何更新內部#stage
文字與ApiRequest.status
每次實時在同一頁面上更改值時,從表單提交到結束的那一刻(當所有背景中的所有內容都完成後,它將重定向到create.html)?
在後端一切正常,我不得不每秒都會觸發'show'動作,因爲每個請求都會返回一個新的'stage'進程。雖然所有內容都在後臺運行,但用戶可通過進程欄獲取進程欄(連接,創建,獲取,整理)。隨着每一個新的請求,我更新'@舞臺'。我想在視圖中顯示「@ stage」,這樣用戶就可以知道當時正在發生的事情。這是個問題,'@ stage'不是固定的,它每改變一次'show'請求都會改變它的值,那麼我怎樣才能用更新後的'@ stage'無刷新更新視圖呢? – YoloSnake
AJAX請求完全在後臺運行,默認情況下它們不會更新當前顯示的頁面。如果你的'show'動作返回HTML,你將不得不使用JavaScript自己解析出響應的新狀態,並手動更新當前頁面上的標籤。 –
我唯一的想法是在setInterval函數中觸發一個Ajax請求,刷新'@ stage'。不知道如何實現它。 – YoloSnake