这个问题可能重复,但是我需要一些帮助来修复代码。
方案:单击提交按钮后,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)
});
});
答案 0 :(得分:0)
您是否尝试将值分配给“窗口”对象?喜欢window.speed和window.variables
速度和变量位于函数范围内,而不是全局范围。