2011-05-31 11 views
2

私はプログラミングには新しくないが、Javascript/Web開発では錆びている。私はRailsを使ってアプリケーションを構築していますが、私たちはユーザーにフィードバックを提供するためにいくつかの時間を費やしています。基本的に、私はAJAXを使用して、このような何かやりたい:「進行中」...「完了」通知を提供する最も簡単な方法は?

  1. を[「続行」「OK」またはユーザーがクリック]
  2. [オプション確認ボックス]
  3. は「ワーキングを言って、ステータスメッセージを表示します... "操作が行われている間
  4. 操作が完了し、サーバーからデータが返されると、ステータスメッセージが「完了」に変わります。結果がレンダリングされるか、または何らかのコールバックが発生します。

私はWeb開発を行って以来、これを達成するための簡単な例が非常に役に立ちます。ありがとうございました。

答えて

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

グローバルに開始および停止にバインドします。この例では、ローダーdivを表示および非表示にします。一般的には、スピンナを持つdivがあり、読み込んでいることをユーザーに知らせることができます。

スピナーの消失が十分である必要があります。「完了」メッセージが過剰です。

+0

ああ、それはそれは行われていた方法ですので。私はいつも考えました... – mhy

+0

+1 - @Raynos - "スピナー"はどこにありますか?それはGIF、jqueryのプラグインですか...? –

+1

@PBrianMackey http://www.ajaxload.info/ – Raynos

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

'.delay'ではなく' setTimeout'なぜ – Raynos

+0

ありがとう!これは非常に明確です。 – mhy

+0

@Raynos私はかなり確信していませんが、 '.delay()'はアニメーションのみに使用されていると思います:) – Teneff

0

あなた自身のAJAXフレームワークを焼くか、内蔵のレールを使っていますか?それが後である場合は、linkt_toため オプションに見て(特に、:更新1)を http://edgeguides.rubyonrails.org/ajax_on_rails.html

+0

ほとんどの場合、内蔵されている可能性があります。とにかく、そのリンクは多くの助けになりました。ありがとう! – mhy