Javascript 通过调用带有参数的函数在N秒后持续刷新网页的一部分

Javascript 通过调用带有参数的函数在N秒后持续刷新网页的一部分,javascript,jquery,ajax,frontend,page-refresh,Javascript,Jquery,Ajax,Frontend,Page Refresh,类似的问题已经出现了。不幸的是,他们似乎都不适合我 我有一个手风琴选项卡,根据登录用户拥有的设备数量,可以有多个手风琴。我在手风琴中为每个设备存储一个键,我需要将其作为参数传递给函数调用以刷新设备状态 $(文档).ready(函数(){ $('.accordion').on('show.bs.collapse',函数(e){ var deviceId=$(e.target).attr('device-id'); 风险值数据={ 'host_name':$(e.target).attr('devi

类似的问题已经出现了。不幸的是,他们似乎都不适合我

我有一个手风琴选项卡,根据登录用户拥有的设备数量,可以有多个手风琴。我在手风琴中为每个设备存储一个键,我需要将其作为参数传递给函数调用以刷新设备状态

$(文档).ready(函数(){
$('.accordion').on('show.bs.collapse',函数(e){
var deviceId=$(e.target).attr('device-id');
风险值数据={
'host_name':$(e.target).attr('device-host-name'),
'host_key':$(e.target).attr('device-host-key'))
};
UpdateAppStatus(设备ID,数据)
});
});
函数updateAppStatus(设备ID,数据){
变量微调器=“
加载…”; if($('#appsStatus-'+deviceId).is(':empty')){ $('#appsStatus-'+deviceId).html(微调器); $.ajax({ url:“{path('app_apps_status')}}”, 类型:“POST”, 数据类型:“json”, 数据:数据 }).完成(功能(数据){ $('#appsStatus-'+deviceId).html(数据); }) } setTimeout(UpdateAppStatus,5000,设备ID,数据) }
另外,AJAX轮询是一种反模式,会导致服务器性能低下。如果您需要保持客户端UI和服务器端数据紧密同步,请改用WebSocket。关于您眼前的问题,请提供一个匿名函数来
setTimeout()
setTimeout(function(){updateAppStatus(deviceId,data);},5000)。我还建议您将其放入
done()
处理程序中,这样当多个请求开始花费超过5秒时,您就不会将它们排队。@Rorymcrossan进行了更改,但它仍然只发送第一个请求,之后不发送任何请求。请检查请求的响应是否成功。
if($(“#appsStatus-”+deviceId)。是否成功(“:empty”)
然后
$(“#appsStatus-”+deviceId).html(data)
-看起来它在后续调用中不会是空的,因此如果您将它移动到
如果
(如建议的
.done
)的内部,那么它只会进行一次调用。