在此場景中,每 10 秒使用 AJAX 查詢回饋資料庫以在 div 中顯示最新回饋。然而,程式碼遇到了一個問題,它只顯示兩個回饋項,而不是不斷更新新的回饋項。
錯誤源自於缺乏觸發後續 AJAX 呼叫的機制在第一個之後。若要修正此問題,請引入 setInterval() 或 setTimeout() 函數來自動重複呼叫。
setInterval() 方法:
<code class="javascript">setInterval(get_fb, 10000);</code>
在此變體中, get_fb() 每 10 秒執行一次,無論前一個 AJAX 呼叫的狀態如何。
setTimeout() 和成功回呼:
<code class="javascript">var feedback = $.ajax({ type: "POST", url: "feedback.php", async: false }).success(function() { setTimeout(function() { get_fb(); }, 10000); }).responseText;</code>
使用此方法,一旦當前 AJAX 呼叫成功完成,就會執行下一個呼叫。
帶有完整回調的 setTimeout():
<code class="javascript">var feedback = $.ajax({ type: "POST", url: "feedback.php", async: false }).complete(function() { setTimeout(function() { get_fb(); }, 10000); }).responseText;</code>
此方法可確保觸發新的 AJAX 調用,無論前一個結果的結果。
jsfiddle 上提供的範例示範了這兩種方法的正確實作。請注意,由於 AJAX 呼叫返回錯誤,成功回調僅有效一次。
以上是為什麼使用 jQuery AJAX 呼叫時間隔 10 秒只顯示兩個回饋項目?的詳細內容。更多資訊請關注PHP中文網其他相關文章!