2011-08-05 80 views
3

所以,我一直在嘗試使用jQuery庫和PHP進行長輪詢。我正在這樣做,以便將來可以製作某種實時通知系統。我現在的代碼並不真正起作用。使用jQuery和PHP的長輪詢

的index.php

<html> 
<head> 
    <title>Long Polling</title> 
    <script type='text/javascript' src='http://code.jquery.com/jquery-1.6.2.min.js'></script> 
    <script type='text/javascript'> 
     $(document).ready(function() { 
      getData(); 
     }); 

     function getData() { 
      $.ajax({ 
       type: "POST", 
       url: "ajax.php", 
       async: true, 
       timeout: 50000, 
       data: "get=true", 
       success: function(data) { 
        $("#info").append(data); 

        setTimeout("getData()", 1000); 
       } 
      }); 
     } 
    </script> 
</head> 
<body> 
    <div id='info'></div> 
</body> 
</html> 

Ajax.php

<?php 
    if(rand(1, 100) % 2) { 
     echo 'even'; 
    } else { 
     sleep(rand(1, 4)); 
    } 
?> 
+0

什麼是「不工作」? – genesis

+0

正在發送請求,但即使if返回false,它也會發送一個新請求,即使if語句返回true,也只是試圖使其僅接收數據。 – Joshwaa

+0

你是什麼意思,它不工作? – ace

回答

0

嘗試使用此爲ajax.php

<?php 
    if(rand(1, 100) % 2) { 
     echo 'even<br />'; 
    } else { 
     sleep(rand(8, 12)); 
    } 
?> 

watch this,有時你需要等待12秒

如果你讓他在一秒內完成它似乎是壞的,但它不是

+0

這與我的代碼只是睡眠時間更長一樣嗎?這是做什麼的? – Joshwaa

+0

@Joshwaa:你的問題是,你的情況看起來「破碎」,因爲你確實收到了很多次。或者什麼是「破」,什麼不起作用? – genesis

+0

我的問題是它發送了太多的Ajax請求 – Joshwaa