2011-05-31 29 views
2

我對編程並不陌生,但在Javascript/web開發中有點生疏。我正在用Rails構建一個應用程序,並且我們有幾個耗時的操作,在此期間我們想要向用戶提供反饋。基本上,我想這樣做使用AJAX:提供「進行中」...「完成」通知的最簡單方法?

  1. [用戶點擊「確定」或「繼續」]
  2. [可選確認對話框]
  3. 顯示狀態消息,說「工作... 「操作發生時
  4. 當操作完成並從服務器返回數據時,狀態消息變爲」完成!「並呈現結果或發生一些回調。

自從我進行網絡開發已經有一段時間了,一個簡單的例子就是如何實現這樣的功能將會非常有幫助。謝謝。

回答

5
$(window).ajaxStart(function() { 
    $("#loader").show(); 
}).ajaxStop(function() { 
    $("#loader").hide(); 
}); 

只是全局綁定到啓動和停止。這個例子顯示並隱藏了一個加載器div。通常你有一個微調,讓用戶知道它正在加載。

微調器的消失應該是足夠的,「完成」的信息是矯枉過正。

+0

唉唉,所以這是它是怎麼做。我總是想知道...... – mhy 2011-05-31 23:06:53

+0

+1 - @Raynos - 你在哪裏得到一個「微調」?它是一個GIF,jQuery插件...? – 2011-06-01 16:54:50

+1

@PBrianMackey http://www.ajaxload.info/ – Raynos 2011-06-01 17:03:12

0
$.ajax({ 
    type: "POST", 
    url: "some.php", 
    data: "name=John&location=Boston", 
    beforeSend(jqXHR, settings) { 
     $(body).append('<div id="overlayStatus">Working...</div>'); 
    }, 
    complete(jqXHR, textStatus) { 
     $('#overlayStatus').html("Ajax call completed: " + textStatus); 
     setTimeout(function(){ 
     $('#overlayStatus').hide(); 
     }, 1000); 
    } 
}); 
+0

爲什麼'setTimeout'而不是'.delay' – Raynos 2011-05-31 22:48:17

+0

謝謝!這很清楚。 – mhy 2011-05-31 23:02:56

+0

@Raynos我不太確定,但我認爲'.delay()'僅用於動畫:) – Teneff 2011-05-31 23:07:21

0

你是在烘烤你自己的AJAX框架,還是使用內建在rails中的?如果是後者,窺視 選項linkt_to(特別是:更新一個) http://edgeguides.rubyonrails.org/ajax_on_rails.html

+0

最有可能的內置。在什麼情況下有充分的理由不使用內置?無論如何,這個鏈接有很大的幫助。謝謝! – mhy 2011-05-31 23:06:14

相關問題