0

私はJavaScriptを学んでいますが、私の小さな(自分で始めた)プロジェクトで次のことができるだけ早く欲しいです。

私のウェブサイトのページがwww.mywebsite.com/myPage.html

これは、10 人のユーザーが私の Web サイトから閲覧しているシナリオですmyPage.html。サーバーから (管理者として) に変更を加えると、で変更を加えた直後に新しい変更が反映されて更新されたページがmyPage.htmlのすべての閲覧者に表示されます。それは非常に速いはずです。myPage.htmlmyPage.html

このためには、ページを更新するボタンを作成する必要があると思いますmyPage.html。に変更を加えるときにmyPage.html、そのボタンを押すと、そのボタンがすべての閲覧者のブラウザのページをリロードします ( myPage.html)。そしてmyPage.html、ブラウザで変更の結果が表示されます。

初心者なので分かりやすく回答お願いします。これにはどの言語が必要ですか?

4

3 に答える 3

0

間隔(10秒ごとなど)で実行されるAJAX関数を作成できます。この関数はサーバーに接続してmysqlからの更新を要求するため、更新がある場合は! ユーザーに通知します。
そのため、ページを更新するときにページ更新情報で更新されるように、DB にテーブルを作成する必要があります。

AJAX (asynchronous javascript and xml ) は、フォームを使用せずにサーバーに接続して投稿する技術であり、ページの一部を自動的に更新できます。

ここに例があります:
私はオンラインチャットを作成したかったので、ここにコードがあります:
このコードは ajax を使用して ChatNotifyController.php に投稿し、オンラインの誰かがいるかどうかを確認します。

//notify user if someone has or had send a message
setInterval(function(){

xmlhttp.open("POST" , "../controller/ChatNotifyController.php" , true);

xmlhttp.onreadystatechange = function()
{
     if (xmlhttp.readyState == 4)
     {
         if(xmlhttp.status == 200) 
         {
             if((xmlhttp.response).length > 4)
             {
                    var friendName = (xmlhttp.response).replace(/^\s*$[\n\r]{1,}/gm, '');
                    var responseArea = document.getElementById( friendName + 'ChatArea');

                    var x = friendName ;

                    if(x.indexOf('.') > 0)
                    {
                        x = x.replace('.', '\\.');
                    }

                    var link = $('#' + x);
                    var input = $('#' + x + 'ChatInput');
                    var e = jQuery.Event("keydown");
                    e.which = 13;

                    if(link.length > 0)
                    {
                        link.click();
                        input.trigger(e);
                    }
                    else
                    {                           
                        var html = "<li><a class=\"onlineUserLink\" id=\"" + friendName + "\" onclick=\"chat(" + "'" + friendName + "'"  + ")\" >" + friendName + "</a></li>";   
                        html += "<div class=\"chatDialog\" title=\"'" + friendName + "\"' id=\"'" +  friendName + 'ChatDialog' + "'\">";
                        html += "<div class=\"chatArea\"" +  " id=\"'" +  friendName + "ChatArea" + "'\">" + "</div>";                                          
                        html += "<input class=\"chatInput\"" + " id=\"'" +  friendName + 'ChatInput' + "'\" size=\"21\"  onkeydown=\"chatController(event , '" +  friendName + "' , '" +  window.user + "')>" + "</div>";

                        window.onlineArea.innerHTML += html;

                        var THIS = $('#' + x  + 'ChatDialog');
                        $(function() {      
                            THIS.dialog({
                                stack: false
                            });
                        });

                        link.click();
                        input.trigger(e);
                    }
             }
         }
         else 
         {
            //alert("Error during AJAX call. Please try again #003");
         }
     }
};
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xmlhttp.send("user=" + window.user);

} ,5000);
于 2013-08-14T04:44:41.773 に答える
0

クライアント側(ブラウザ)のsocket.ioの場合、すべてのクライアントを特定のチャネルでサブスクライブし、そのチャネルを介してサーバーからのリクエストが受信されたときにjavascriptでページをリロードします。サーバーでは、ページをリロードするたびに、その特定のチャネルにメッセージをブロードキャストできます。

于 2013-08-14T04:38:40.643 に答える