如何在登录时才运行setInterval ajax调用



我已经实现了计数未读数的自动加载。
它返回每15秒未读的消息数。
但是,即使用户没有登录,它也会做同样的事情。

我怎样才能阻止这一切?我想只在用户登录时才这样做。

我有这样的js

jQuery(document).ready(function () {
    refreshPartial();
    setInterval(refreshingPartial, 15000)
});

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

使用内联js

<% 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 %>

如果用户已登录,则在主体中添加一个类,并控制该类。

<body class="<%= "logged-in" if current_user %>">
</body>

并稍微修改一下你的js

jQuery(document).ready(function () {
  if ($("body").is(".signed-in")) { 
    refreshPartial();
    setInterval(refreshingPartial, 15000)
  };
});

refreshPartial js脚本应该只在用户登录时呈现。下面的代码可以达到这个效果:

<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>

最新更新