3

ここでjQuery AJAX リクエストを使用してロング ポーリングを作成する手順に従っています。以下は私のコードです:

:javascript
  (function poll(){
      $.ajax({ url: $("comment").data("url"), success: function(data){
          alert(data.comment);
      }, dataType: "json", complete: poll, timeout: 8000 });
  })();

ただし、8 秒間タイムアウトする代わりに、このコードは継続的にポーリングします。私は何か間違ったことをしていますか、それともturbolinkRails 3.2 で使用している gem と競合していますか?

ありがとうございました。

4

1 に答える 1

2

完全なコールバックで関数 poll を再度呼び出しているため、再度ポーリングする理由

    (function poll(){
          $.ajax({ url: $("comment").data("url"), success: function(data){
              alert(data.comment);
          }, dataType: "json", complete: poll, timeout: 8000 });
-----------------------------------------^ //here
      })();

timeoutまた、と を混同しないsetTimeoutでください。ここでのタイムアウトは、ajax 呼び出しが 8 秒以内に返されない場合、エラー コールバックがトリガーされることを意味します。

ライブデモ

于 2013-03-14T04:23:38.993 に答える