Dalam senario ini, pangkalan data maklum balas disoal menggunakan AJAX setiap 10 saat untuk memaparkan maklum balas baharu dalam div . Walau bagaimanapun, kod tersebut menghadapi isu di mana ia hanya memaparkan dua item maklum balas dan bukannya mengemas kini secara berterusan dengan yang baharu.
Ralat berpunca daripada kekurangan mekanisme untuk mencetuskan panggilan AJAX berikutnya selepas yang awal. Untuk membetulkan ini, perkenalkan fungsi setInterval() atau setTimeout() untuk mengautomasikan ulangan panggilan.
Pendekatan setInterval():
<code class="javascript">setInterval(get_fb, 10000);</code>
Dalam variasi ini, get_fb() melaksanakan setiap 10 saat tanpa mengira status panggilan AJAX sebelumnya.
setTimeout() dengan Success Callback:
<code class="javascript">var feedback = $.ajax({ type: "POST", url: "feedback.php", async: false }).success(function() { setTimeout(function() { get_fb(); }, 10000); }).responseText;</code>
Dengan kaedah ini, panggilan seterusnya dilaksanakan sebaik sahaja panggilan AJAX semasa berjaya diselesaikan.
setTimeout() dengan Panggilan Balik Lengkap:
<code class="javascript">var feedback = $.ajax({ type: "POST", url: "feedback.php", async: false }).complete(function() { setTimeout(function() { get_fb(); }, 10000); }).responseText;</code>
Pendekatan ini memastikan bahawa panggilan AJAX baharu dicetuskan tanpa mengira daripada hasil yang sebelumnya.
Contoh yang disediakan pada jsfiddle menunjukkan pelaksanaan yang betul bagi kedua-dua kaedah. Ambil perhatian bahawa panggilan balik kejayaan berfungsi sekali sahaja disebabkan oleh ralat yang dikembalikan oleh panggilan AJAX.
Atas ialah kandungan terperinci Mengapa Hanya Dua Item Maklum Balas Dipaparkan Apabila Menggunakan Panggilan AJAX jQuery pada Selang 10 Saat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!