jQuery .empty()导致AJAX填充的div闪烁

时间:2013-05-23 21:44:06

标签: php javascript jquery mysql ajax

我正在编写一个动态网站,该网站使用AJAX检查公司前端和后端员工之间库存项目的状态。一名员工提交请求,后面的人看到它弹出队列,然后回应所请求的项目是否有库存。然后,前端员工会正确地看到他们的请求状态发生变化。

我遇到的问题,也许有更好的处理方式,当代码使用AJAX从数据库中的表中检索所有活动请求然后使用jQuery的.empty()函数来清除时out容器div,它包含所有旧请求(每2秒一次setInterval())并使用PHP脚本重新生成队列,该脚本根据AJAX结果动态构建。

setInterval()函数调用.empty()函数使容器div导致队列明显消失并重新出现。是否有更好的方法使用jQuery更新队列,而不是清空整个队列,然后根据更新的状态重建它?我不能简单地查询最新请求,因为旧请求的状态可能已更改,也需要更新。

希望这很清楚,如果没有,那么请询问需要哪些更多信息,非常感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:2)

像这样......

$(document).ready(function(){Update();});

function Update() {
    $.ajax({
        url: 'http://example.com/url/to/poll',
        success: function(data) {
                $('#MyDiv').html(data);
                setTimeout('Update()', 2000);
        },
        fail: function() {
            //Something went wrong. Inform user/try again as appropriate
            alert('Failed');
            setTimeout('Update()', 2000);
        }
    })
}

它只在当前完成后的2s延迟开始。此外,它从来没有真正清空Div,它只是用新的替换旧内容。