Javascript 以设置的间隔刷新DIV元素

Javascript 以设置的间隔刷新DIV元素,javascript,jquery,html,django,Javascript,Jquery,Html,Django,对于Django项目中的聊天应用程序,我用登录用户的链接填充了一个侧栏。 链接会打开一个聊天弹出窗口(类似于FB stlye)。如果我刷新页面,任何打开的弹出窗口都会关闭。我只想刷新侧栏以反映用户是否已注销。此代码刷新整个页面和所有打开弹出窗口的关闭 $(function(){ $('#sidebar-name').on('scroll', function(){ scrolling = true; }); setTimeout(function() {

对于Django项目中的聊天应用程序,我用登录用户的链接填充了一个侧栏。 链接会打开一个聊天弹出窗口(类似于FB stlye)。如果我刷新页面,任何打开的弹出窗口都会关闭。我只想刷新侧栏以反映用户是否已注销。此代码刷新整个页面和所有打开弹出窗口的关闭

$(function(){
    $('#sidebar-name').on('scroll', function(){
        scrolling = true;
    });
    setTimeout(function() { location.reload() },3500);

});
我使用下面的代码获取消息并刷新消息框

function getMessages(){
    if (!scrolling) {
        $.get('/chatpop/messages/', function(messages){
            console.log(messages);
            $('#msg-list').html(messages);
            var chatlist = document.getElementById('msg-list-div');
            chatlist.scrollTop = chatlist.scrollHeight;
        });
    }
    var scrolling = false;
}

$(function(){
    $('#msg-list-div').on('scroll', function(){
        scrolling = true;
    });
    refreshTimer = setInterval(getMessages, 10000);
});
我也尝试了以下方法,但不起作用

$(function(){
    $('#sidebar-name').on('scroll', function(){
        scrolling = true;
    });
    (function() { load(location.href +'#sidebar-name') },10000);

});
我只需要刷新侧边栏,这样就不会关闭已经打开的聊天弹出窗口

正在使用的HTML是

 <div class="chat-sidebar">
        <div class="sidebar-name">
            <!-- Pass username and display name to register popup -->
            {% for user in request.online_now %}
                {% if request.user != user %}
            <a href="javascript:register_popup('{{ user }}', '{{ user }}');">
            {% for img in users %}
                {% if img == user %}
        {% thumbnail img.profile.photo "30x30" crop="100%" as im %}
         <img src="{{ im.url }}" class="user-detail">
            {% endthumbnail %}{% endif %}{% endfor %}
            <span>{{ user }}</span>
            </a>{% endif %}{% endfor %}

{request.online中的用户的%now%}
{%if request.user!=user%}
{%endif%}{%endfor%}

我已经看了一些答案。但它们似乎都能处理事件发生时的重新加载。我只想按设定的时间间隔刷新。许多THK..

创建一个视图,以html格式返回在线用户,并每隔一段时间加载该url

setInterval(function() {
      $("#sidebar-name").load("{% url 'get_active_users' %}"); // you need to create get_active_users view
}, 5000);

不要使用AJAX轮询。如果您正在构建聊天系统,请使用WebSocket或服务器发送的事件。我已经知道这一点,并且与问题无关,所以您的模板位于服务器上,而您没有API?1999刚打电话来要他们的密码back@PaddyPopeye它与您的问题完全相关,因为它完全解决了问题,并通过向您自己的服务器发送大量AJAX请求
location.reload()
重新加载整个页面,从而为您的服务器节省了DDOS。您对
setInterval
没有问题,您对加载的内容有问题。至少,使用
$.ajax({method:'get',url:location.href).done(函数(html){…解析html…});
perfect…我已经通过我编写的中间件加载了登录的用户,稍加修改,上面的函数就可以工作了!!