2011-04-19 92 views
0

我正在使用下面的代碼,但我似乎無法得到它的工作。如果任何人能夠幫助或者指出我的方向是非常好我試圖實現的是一種Facebook風格的警報,其中警報將在不刷新頁面的情況下顯示。警報的數量來自數據庫中的行數。我做什麼愚蠢的事情?PHP變量更新使用jQuery

的jQuery:

<script type="text/javascript"> 
var alertNumber = <?php echo $display['alertNumber']; ?>; 
setTimeout(checkVariableValue, 2000); 
function checkVariableValue() { 
    $.ajax({ 
     url: 'jquery.php?query='.alertNumber, 
     success: function(newAlert) { 
      if (newAlert != alertNumber); 
       alertNumber = newAlert; 
       document.getElementById("wibble").innerHTML=alertNumber; 
      } 
    }); 
} 
</script> 
+0

閱讀'長輪詢'http://stackoverflow.com/questions/333664/simple-long-polling-示例代碼 – Dunhamzzz 2011-04-19 14:38:59

+0

以及它在幹什麼?什麼?沒有? – Groovetrain 2011-04-19 14:39:56

+0

@Dunhamzzz謝謝我會讀一讀! – David 2011-04-19 14:41:07

回答

6

此行

 
url: 'jquery.php?query='.alertNumber, 

應該

 
url: 'jquery.php?query='+alertNumber, 
+0

一個額外的好抓住。 – Dutchie432 2011-04-19 14:41:26

+0

locrizak你知道我將如何去循環該函數,以便它每5秒鐘檢查一次嗎? – David 2011-04-19 15:10:20

+0

@David而不是setTimeout你需要setInterval。在setInterval繼續之前,setTimeout將只執行一次,直到您清除它。 – locrizak 2011-04-19 15:14:37

2

也許我失去了一些東西,但我沒有看到你的頁居然附和任何文本爲你的函數讀取。

3
url: 'jquery.php?query='.alertNumber, 

是我眼中的錯。它必須是url: 'jquery.php?query=' + alertNumber,

0

現在你的php代碼似乎沒有發回任何迴應。

一旦你的行中的變量$ Q數量,只要加入這行

echo $q; 

您可能還需要在Ajax請求添加的dataType選項來指定你期待回的響應鍵入文字

$.ajax({ 
     url: 'jquery.php?query='+alertNumber, 
     dataType : 'text', 
     success: function(newAlert) { 
      if (newAlert != alertNumber); 
       alertNumber = newAlert; 
       document.getElementById("wibble").innerHTML=alertNumber; 
      } 
    }); 
+0

'text'不是有效的數據類型。選項是'xml','json','script'或'html',所以它應該是'html' – Dutchie432 2011-04-19 14:43:52

+0

它是。從文檔http://api.jquery.com/jQuery.ajax/ – naiquevin 2011-04-19 14:46:09

+0

確認哦,我的錯誤。我猜'智能猜測中不會使用'text',而是使用'html'。謝謝。 – Dutchie432 2011-04-19 14:47:39

1

我很抱歉有一個答案。其他人似乎已經找到了這個問題(或者至少一個),我只是覺得這個密度太大而不能發表評論。

我會建議改變你的風格,在數據庫中有一個「讀取標誌」,而不是保留到最後一行(或在你的案例行數),並使用它作爲鑑別器。隨着消息的增長,您不會希望(可能)數百個結果通過AJAX調用轉儲。另外,除非您假設一旦它已經顯示在用戶已經確認的頁面上。 (一個例子是最後一分鐘的消息彈出,用戶同時點擊鏈接 - 現在沒有可見性)。

另外,如果您發現該網站是獲得大量的流量,它可以同時尋找到推送服務(一篇文章,我發現快速谷歌搜索goes on about it and its benefits

0
var alertNumber = <?php echo $display['alertNumber']; ?>; 
setTimeout(checkVariableValue, 2000); 
function checkVariableValue() { 
    $.ajax({ 
     url: 'jquery.php?query='.alertNumber, 

看到行是值得url屬性? 該行不在php腳本中......所以你必須使用一個javascript連接運算符(+)