首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何仅在登录时运行setInterval ajax调用?

问如何仅在登录时运行setInterval ajax调用?
EN

Stack Overflow用户
提问于 2012-12-25 22:04:17
回答 2查看 1.1K关注 0票数 1

我已经实现了计数未读的自动重载。

它每15秒返回未读消息的数量。

但即使用户未登录,它也会执行相同的操作。

我怎么才能阻止它呢?我只想在用户登录时执行此操作。

我有这样的js

代码语言:javascript
复制
jQuery(document).ready(function () {
    refreshPartial();
    setInterval(refreshingPartial, 15000)
});


function refreshingPartial() {
  $.ajax({
    url: "/messages/refreshing_partial",
    type: "GET",
    dataType: "script",
  });
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-25 22:26:03

使用内联js

代码语言:javascript
复制
<% if current_user %>
    <%= javascript_tag do %>
        jQuery(document).ready(function () {
            refreshPartial();
            setInterval(refreshingPartial, 15000)
        });


        function refreshingPartial() {
          $.ajax({
            url: "/messages/refreshing_partial",
            type: "GET",
            dataType: "script",
          });
        }
    <% end %>
<% end %>

或

如果用户登录并控制类,则将类添加到正文中。

代码语言:javascript
复制
<body class="<%= "logged-in" if current_user %>">

</body>

并稍微修改一下js。

代码语言:javascript
复制
jQuery(document).ready(function () {
  if ($("body").is(".signed-in")) { 
    refreshPartial();
    setInterval(refreshingPartial, 15000)
  };
});
票数 3
EN

Stack Overflow用户

发布于 2012-12-25 22:29:29

只有当用户登录时,才应该呈现refreshPartial js脚本。下面的代码应该可以解决这个问题:

代码语言:javascript
复制
<script type="text/javascript">
    $(document).ready(function () {
        <% if is_user_signed_in %>
            refreshPartial();
            setInterval(refreshingPartial, 15000);

            function refreshingPartial() {
                $.ajax({
                        url: "/messages/refreshing_partial",
                        type: "GET",
                        dataType: "script",
                });
            }
        <% end %>
    });
</script>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14031316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档