javascript - JS/jQuery - 页面加载时启动功能,每 x 秒一次,点击时启动功能

标签 javascript jquery

我想启动一个 AJAX 调用,在页面加载时首次刷新表格,但从那时起,需要它每 XX 秒运行一次,而且每当用户按下“刷新”按钮时也需要运行一次。

现在我不想制作相同代码的 3 个副本并将其绑定(bind)到 3 个不同的启动器,解决此问题的最佳方法是什么?

这里每 5 秒运行一次,但不会在页面加载或按钮单击时运行

  <script type="text/javascript" language="javascript">
    $(function() {
        var prevAjaxReturned = true;
        var xhr = null;

        setInterval(function() {
            if( prevAjaxReturned ) {
                prevAjaxReturned = false;
            } else if( xhr ) {
                xhr.abort( );
            }

            xhr = $.ajax({
                type: 'POST',
                url: '../../plugins/MySQL/ajax_action.php',
                data: {
                    action: 'refresh_rescap_reqs',
                    holidex: '<?php echo($_SESSION['Holidex']); ?>',
                    access: '<?php echo $_SESSION['Access']; ?>'
                },
                //dataType: 'json',
                success: function(data) {
                    $('#Last20Requests').html(data);
                    prevAjaxReturned = true;
               },
            });

        }, 5000);   // 1000ms = 1 sec
    });
  </script>

谢谢

最佳答案

只需将函数绑定(bind)到变量,就可以重用它。

<script type="text/javascript" language="javascript">
$(function() {
    var prevAjaxReturned = true;
    var xhr = null;

    var functionToRun = function() {
        if( prevAjaxReturned ) {
            prevAjaxReturned = false;
        } else if( xhr ) {
            xhr.abort( );
        }

        xhr = $.ajax({
            type: 'POST',
            url: '../../plugins/MySQL/ajax_action.php',
            data: {
                action: 'refresh_rescap_reqs',
                holidex: '<?php echo($_SESSION['Holidex']); ?>',
                access: '<?php echo $_SESSION['Access']; ?>'
            },
            //dataType: 'json',
            success: function(data) {
                $('#Last20Requests').html(data);
                prevAjaxReturned = true;
           },
        });

    };

    setInterval(functionToRun, 5000);   // 1000ms = 1 sec
    $(document).on('click', functionToRun);
    functionToRun();
});

关于javascript - JS/jQuery - 页面加载时启动功能,每 x 秒一次,点击时启动功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43609555/

相关文章:

javascript - 为什么我的 for (key in list) 不像我想象的那样工作?

javascript - 使用 PHP、AJAX 和 jQuery 搜索 MySQL 数据库

javascript 将时间戳转换为 2 位数字格式的小时/分钟

javascript - fullpage.js 在 verticalCentered : true 时防止网站在第一次加载时跳转

javascript - 根据匹配设置对象数组内对象的属性 : React JS

javascript - 未在 webview iframe 中执行的预加载脚本

jquery - 在 jquery 移动页脚的导航栏中仅使用没有文本的图标时出现问题

javascript - AJAX - Javascript 数组到 php

jquery - 您可以在不更改 html 的情况下覆盖白色和黑色的 Jquery 移动股票图标吗?

javascript - 更改页面上使用的每个实例的 jquery 变量