0

私はjquery/ajaxリクエストを扱ってきました。データベースからデータを取得する ajax リクエストを正常に取得しました。問題は、window.setInterval()この関数を x 秒ごとに更新するために常にサービスを提供していることです。

これをどのように変更して ajax リクエストを存続させ、ajax スクリプトに複数のリクエストを提供しなくても html コンテンツを更新できるようにします。

私のコードは次のとおりです。

window.setInterval(function()
{
  $(function () 
  {
    $.ajax({                                      
        url: 'Ajax.php'+SearchTerm, dataType: 'json',  success: function(rows)        
        {
        $('#NumberOfVotes').empty();

            for (var i in rows)
            {
                var row = rows[i];          
                var QuestionID = row[0];
                var Votes = row[1];
                $('#NumberOfVotes')
                .append(Votes);
            } 
        } 
    });       
  });
}, 500);
4

4 に答える 4

2

これの多くは、サーバーがコンテンツを動的に更新する方法に依存します。つまり、探しているのは websocket です。Websocket は、ロング ポーリング パラダイムを置き換えるように設計されています。

編集: サーバー テクノロジに主に php を使用しているため、Ratchet を参照してください。私はそれについて良いことを聞いたhttp://socketo.me/

これは、HTML http://net.tutsplus.com/tutorials/javascript-ajax/start-using-html5-websockets-today/で websockets を使用することに関する優れた記事です。

.NET には、SignalR http://signalr.net/に優れたソケット ライブラリがあります。

ソケットに関する無数の php ドキュメントがあります http://php.net/manual/en/book.sockets.php

于 2013-03-14T14:37:22.427 に答える
0

Webソケットの使用を検討してください-クライアントが新しいデータを探す必要があるときはいつでもメッセージを送信できます-そうすれば、不要なリクエストを行うことはありません. pubnub をチェックしてみてください。サービスは安価で、必要なものすべてを処理できます。

于 2013-03-14T14:38:35.103 に答える
0

何かが返されるまでリクエストを維持するサーバー側が必要です。これは通常、「コメット」、「ロングポーリング」、または「プッシュ」と呼ばれます。

原則は次のとおりです。

  1. AJAX経由でクライアント側にリクエストを送信します
  2. サーバーはリクエストを受け取りますが、まだレスポンスを返しません。何か返すものがあるまでスリープ/待機します
  3. データベースに新しいエントリが追加されました! サーバーは返すものを持っています: 待機中のリクエストに対して JSON データを返します。
  4. 応答サーバー側を受信し、表示する必要があるものを表示し、手順 1 に戻って別の要求を送信します。

現在、実装サーバー側は、使用している言語/フレームワークに依存します。


編集 :

PHP を使用したいくつかの例:

コメットとPHP

PHP と jQuery を使用した簡単な Comet の実装

于 2013-03-14T14:39:07.440 に答える
0

xhr.multipart = trueサーバーコードを設定および変更できます。マルチパート レスポンスのコード例を参照してください。別の方法は、前述のように websockets を使用することです

于 2013-03-14T14:42:50.023 に答える