在此场景中,每 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中文网其他相关文章!