jquery/javascript setInterval

use*_*198 2 javascript jquery

目前我正在开发用户通知警报消息功能.

我设法用来setInterval控制我的Ajax调用(检查用户是否有任何通知消息).但我的问题是我只希望通知消息只在页面上出现一次(现在它在屏幕上显示多个通知警报消息).我知道您可以使用setTimeout它只调用一次但我还需要页面检查是否每5分钟有一个新的通知消息警报.

第二个问题是第一轮可能会立即调用Ajax,然后每5分钟调用一次所有其他调用吗?因为我希望系统在他们登录系统后立即检查n然后每5分钟一次.

这是我的代码

function getAjaxNotice() {
    $.post("/async/getnotification", {},
        function(response) {
            var notice = $(response);
            $("#notices").prepend(notice);
        });

    return false;
}

setInterval("getAjaxNotice()", 50000);
Run Code Online (Sandbox Code Playgroud)

Sco*_*rie 11

首先,您应该将初始化代码包装在onLoad函数中:

$(document).ready(function() {
  // Put all your code here
});
Run Code Online (Sandbox Code Playgroud)

让它出现一次很容易,使用.html()代替设置内容而不是添加内容:

$("#notices").html(notice);
Run Code Online (Sandbox Code Playgroud)

第三,作为样式注释,不应将字符串传递给setInterval().相反,传递一个函数名称:

setInterval( getAjaxNotice, 50000 );
Run Code Online (Sandbox Code Playgroud)

最后,让它现在调用函数,并在每5分钟后再次调用,使用:

// Set the timer
setInterval( getAjaxNotice, 50000 );
// Call it once now
getAjaxNotice();
Run Code Online (Sandbox Code Playgroud)

另请注意,50000是50秒,而不是5分钟.5分钟将是5*60*1000 = 300000.