单击提交按钮后的 AJAX 定期轮询数据

Posted

技术标签:

【中文标题】单击提交按钮后的 AJAX 定期轮询数据【英文标题】:AJAX periodical polling data after submit button is clicked 【发布时间】:2019-01-23 03:16:42 【问题描述】:

这个问题可能会重复,但我需要一些帮助来修复代码。

场景:点击提交按钮后,ajax 会将表单数据发送到服务器。并根据表单数据(变量和更新速度)进行轮询以获取响应数据。

当前瓶颈:由于速度和变量是全局声明的,正确的响应只会在第一次单击并完成提交时显示。否则对于 doPoll 的 setTimeout 轮询,由于没有捕获表单数据,它将显示 null 值。

期望结果:一旦用户提交点击按钮,根据用户的更新速度值定期拉取数据,并将所有响应保存在键值数组中。响应将用于绘制 Chart.js。

任何建议和感谢。

代码:

    $('#submit-button').click(function(e)

        var speed = $('#update-speed-input').val();
        var variables = $('#variables-select-input').val();

      function doPoll(speed,variables)
            $.post(" route('getFilterUnitData') ", 
             speed: speed,
             variables: variables,
          , function(response) 
                console.log(response);
                setTimeout(doPoll,speed);
            );
        

      $.ajax(
          url: " route('getFilterUnitData') ",
          method: 'post',
          data: 
             speed: speed,
             variables: variables
          
          ,
          success: function(response)
             console.log(count(response));
          ,
          error: function(result)  
                console.log(result);
            ,
            complete: setTimeout(doPoll(speed,variables), speed) 

      );


    );

【问题讨论】:

【参考方案1】:

您是否尝试将值分配给“窗口”对象?喜欢window.speed和window.variables

速度和变量在函数范围内而不是全局范围内。

【讨论】:

以上是关于单击提交按钮后的 AJAX 定期轮询数据的主要内容,如果未能解决你的问题,请参考以下文章

单击提交按钮时触发 Ajax 调用

如何通过包含表单数据但不单击提交按钮的 ajax 将视图模型发送到控制器

如何在提交按钮上多次单击时仅在数据库中插入一条记录

Rails 5 ajax 表单:单击 Ajax 中的 2 个单选按钮之一提交表单

如果页面未刷新,则多个ajax调用按钮单击jquery

Django如何通过单击带有变量的提交按钮从ajax调用views.py中的函数