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

时间:2019-01-23 03:16:43

标签: javascript jquery ajax polling

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

方案:单击提交按钮后,ajax将把表单数据发送到server。然后根据表单数据(变量和更新速度)执行轮询以获取响应数据。

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

所需结果:用户提交单击按钮后,根据用户的更新速度值定期提取数据,并将所有响应保存在键值数组中。响应将用于绘制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 个答案:

答案 0 :(得分:0)

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

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