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
)的内部,那么它只会进行一次调用。