当使用ajax间隔刷新时,如何停止文本或元素的闪烁?

时间:2011-06-21 13:55:14

标签: jquery ajax

<script>

$(document).ready(function()
    {
        setInterval(doAjaxStuff, 500);
    }); 
    function doAjaxStuff()
    {
        /* $.ajaxSetup ({ cache: false  }); */  

        $.ajax
        ({
            url: "../getStatus/"+id,
            dataType: 'json',
            success: function(json) 
            {
                if(json.status ==  "ACTIVE")
                {
                    $('#ajaxStatus').html(jason.status);

                }
            });
         }

</script>


//I get refreshed and cause flickering
<p id= ajaxStatus > Refresh Me</p>

5 个答案:

答案 0 :(得分:2)

有一个更容易使用的jquery函数来从页面加载文本。 您可以用$(“#ajaxStatus”)替换整个.ajax调用.load(“../ getStatus /”+ id)

不确定是否会停止闪烁,但至少应使程序更清洁。

答案 1 :(得分:2)

我在使用jquery load();

时遇到了同样的问题
$('#div').load('/ajax.php', data);

在我加载到#div中的ajax.php我再次包含了jquery lib和我的样式表。所以新内容得到了新的风格和jquery功能吗?

发现新内容选择了父css和js函数!

底线:

在新加载的div中包含相同的css作为父级导致闪烁,因为html元素再次被设置样式。

答案 2 :(得分:1)

尝试添加检查,以便仅在值发生更改时进行更新。

if(json.status ==  "ACTIVE" && $('#ajaxStatus').html() !== "ACTIVE")
{
    $('#ajaxStatus').html(jason.status);        
}

答案 3 :(得分:1)

我会说500太快了。你必须记住,即使ajax调用没有完成,间隔也将继续并请求信息。我的建议是将setInterval更改为setTimeout并在成功时重新初始化超时,或者将间隔调高到1500-2000。你最好用超时

答案 4 :(得分:1)

使用此:

$( '#ajaxStatus' ).replaceWith( jason.status );