2011-07-08 1 views
0

私は、従業員がログインして管理できるサイトを持っています。サーバー側の変更があったときにユーザーのAJAXアラートを作成する

各従業員にはTo-Doアイテムのリストがあります。新しい顧客がサインアップするなど、いくつかの異なることについて従業員のリストに項目を追加することができます。アイテムが従業員のリストに追加されると、ログインした従業員の画面にajaxダイアログが表示され、その従業員の画面を閉じることができます。

これを行う最善の方法は何ですか?それはあなたのケースのために非常によく合っ

http://jqueryui.com/demos/dialog/

:私はC#を使用しています、MVC 3とレイザー

答えて

2

に役立ちます。これにより、AJAXリクエストをサーバーに定期的に送信して更新をチェックしたり、何らかの条件が満たされた場合にユーザーに警告したりできます。

[Authorize] 
public ActionResult Poll() 
{ 
    bool isUpdated = CheckForUpdates(User.Identity.Name); 
    return Json(isUpdated, JsonRequestBehavior.AllowGet); 
} 

とビューで:そこ場合は、使用することができ

var intervalId = window.setInterval(function() { 
    // send AJAX requests every 4 seconds to check for updates 
    $.getJSON('@Url.Action("poll")', function(isUpdated) { 
     if (isUpdated) { 
      // TODO: use some fancy popup instead of an alert :-) 
      alert('There are updates'); 
      window.clearInterval(intervalId); 
     } 
    }); 
}, 4000); 

別の技術、サーバがクライアントに通知を推進しているあなたは、このようなコントローラのアクションを持つことができる。例えば

更新です。 HTML5 WebSocketsこれを可能にします。利点は、継続的なポーリングと多数のAJAXリクエストを避けるため、はるかに最適化されていることです。ただし、ブラウザではまだ広くサポートされていないという欠点があります。現代のブラウザはそれをサポートしていますが、それはまだドラフトなので、変更される可能性がありますので、一般のインターネットではあまり人気がありません。一方、ユーザーのブラウザを制御できるなら、非常に良い解決策になるかもしれません。

あなたがそのルートに行くことを決めたら、blog of this guyをチェックアウトすることができます。

0

あなたはjqueryのUIダイアログを使用することができます。

・ホープこれはあなたがsetInterval JavaScriptのメソッドを使用して、更新のためにサーバーをポーリングでき

+0

はい、ただし、写真にタグが付けられているとFacebookにポップアップ通知が表示されたときなど、新しいダイアログを動的に表示するにはどうすればよいですか。 – Steven

-1

クライアント側でJqueryのajax関数を使用して、サーバーの更新をポーリングします。たとえば :それは関係なく、あなたの呼び出し元の関数が終了するの発火するので

$.get("/service/getNewItems/", function (data) { 
     if (data != null) { 
      // display new items in a div 
     } 
     else { 
      //alert('null'); 
     } 
    }); 
2

がするsetIntervalを使用しないでください。代わりにsettimeoutを使用してください。 そして最後に関数の中で最後に呼び出します。

関連する問題