上次的AJAX定时刷新多ID不正确,这次请教了高手之后补全
关键是setInterval无法传递参数,所以用了匿名函数再包裹一下就好了。
//重置发布进度
function resetPercent(id_data){
$.ajax({
url:'/autodeploy/reset_percent/' + id_data,
success: function(json){
},
});
};
//间隔刷新,显示百分比,AJAX调用rest_framework框架
var _interval = {};
function showPercent(id_data){
//var _interval;
var percent_value;
var id_subserver = id_data.split("-")[0]
$.getJSON("/api/subserver/" + id_subserver,
function(data,state){
if (state == 'success') {
percent_value_array = data.deploy_status.split(",");
percent_value = percent_value_array[0];
cmd_value = percent_value_array[1];
$('#' + id_data).html("<div class='uk-progress uk-progress-striped uk-progress-active'><div class='uk-progress-bar' style='width: " + percent_value + "%;'>" + cmd_value + ' ' + percent_value + "%</div><i class='uk-icon-cog uk-icon-spin'></i></div>");
console.log(percent_value[0])
if ( percent_value != 100 ){
//_interval = setInterval(showPercent(id_data), 3000);
} else {
clearInterval(_interval[id_data]);
$('#' + id_data).html("<div class='uk-progress uk-progress-striped uk-progress-success'><div class='uk-progress-bar' style='width: " + percent_value + "%;'>100%</div></div>");
};
};
}
);
};
$(".btn-multi-deploy").click(function(){
var deploypool_id = $(this).attr("deploypool_id")
var group_data = $("#deploy-form" + deploypool_id).serialize()
var deploy_type = $(this).attr("deploy_type")
var _self = this;
console.log(deploypool_id, group_data)
//因为涉及到模态对话态中的AJAX输出ID定位,所以用了两个数组来重置更新进度和刷新百分比。可以优化。
var id_array = []
var id_s_array = []
var group_array = group_data.split("&");
for (var key_data in group_array) {
if (group_array[key_data].indexOf("select-deployversion") != -1) {
deploy_id = group_array[key_data].split("=")[1]
};
if (group_array[key_data].indexOf("check-server") != -1) {
id_s_array.push(group_array[key_data].split("=")[1])
id_array.push(group_array[key_data].split("=")[1] + "-" +deploy_id)
};
};
promiseDEPLOY = $.ajax({
url:'{% url "autodeploy:group-cmd" %}',
type: 'post',
data:{
group_data: group_data,
deploy_type: deploy_type,
},
dataType: 'json',
beforeSend: function(){
result_output = $(_self).siblings("p.result_output");
result_output_desc = $(_self).siblings("p.result_output_desc");
$(_self).attr('disabled',"true");
$(_self).append(" <i class='uk-icon-cog uk-icon-spin'></i>");
result_output_desc.append(" <strong>集群发布中,请耐心等候....</strong>");
// result_output.html("<div >集群发布中,请耐心等候....</div>");
//发送前重置
for( index=0;index < id_s_array.length;index++){
resetPercent(id_s_array[index]);
}
},
success: function(json){
$(_self).children('i').remove();
$(_self).append(" <i class='uk-icon-check'></i>")
result_output_desc.append("<span class='uk-text-success'><i class='uk-icon-check'></i></span>");
result_output_desc.append("<span class='uk-text-success'>异步队列分发完成,每个服务器开始更新。</span>");
//发送后获取进度
for( index=0;index < id_array.length;index++){
var key = id_array[index];
//_interval = setInterval(function(){showPercent(key)}, 3000);
_interval[key] = setInterval(function(){showPercent(key);}, 3000);
}
},
error: function(){
result_output_desc.append("<span class='uk-text-muted'><br>服务器内部错误 </span>");
result_output_desc.append("<span class='uk-text-danger'><i class='uk-icon-remove'></i></span>");
$(_self).children('i').remove();
result_output.html("<div ></div>");
},
complete: function(){
}
});/* end cmd-run stop */
});
上次的AJAX定时刷新多ID不正确,这次请教了高手之后补全的更多相关文章
- jQuery实现AJAX定时刷新局部页面实例
本篇文章通过两种方法实例讲解ajax定时刷新局部页面,当然方法有很多种,也可以不使用ajax来刷新页面,可以使用jquery中的append来给指定内容加东西,但是都不太实用,最实用的方法还是ajax ...
- 【jQuery】: 定时刷新页面
<%@page import="qflag.ucstar.seatmonitor.manager.SeatMonitorManager"%><%@ page la ...
- 使用ajax+php+mysql实现数据库定时刷新
php版本5.5.9,mysql版本5.7. 所以php链接mysql就是使用mysql_connect. 如果遇到了连接时没有成功也没有失败的情况时,就重启mysql,或重启docker(睡一觉就好 ...
- Ajax定时局部刷新
1.局部刷新一个地方 function refreshOnTime(){ $.ajax({ //配置 }); //7秒后重复执行该函数 setInterval('refreshOnTime', 700 ...
- js中对arry数组的各种操作小结 瀑布流AJAX无刷新加载数据列表--当页面滚动到Id时再继续加载数据 web前端url传递值 js加密解密 HTML中让表单input等文本框为只读不可编辑的方法 js监听用户的键盘敲击事件,兼容各大主流浏览器 HTML特殊字符
js中对arry数组的各种操作小结 最近工作比较轻松,于是就花时间从头到尾的对js进行了详细的学习和复习,在看书的过程中,发现自己平时在做项目的过程中有很多地方想得不过全面,写的不够合理,所以说啊 ...
- Ajax回退刷新页面问题的解决办法
在脚本之家看到一篇文章,觉得以后可能会用上,但是竟然不能收藏,所以只能将其转到博客园. 以下是原文地址: http://www.jb51.net/article/87856.htm 这篇文章主要介 ...
- 移动端图片上传解决方案localResizeIMG先压缩后ajax无刷新上传
现在科技太发达,移动设备像素越来越高,随便一张照片2M+,但是要做移动端图片上传和pc上略有不同,移动端你不能去限制图片大小,让用户先处理图片再上传,这样不现实.所以理解的解决方案就是在上传先进行图片 ...
- Ajax无刷新提交
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- thinkphp ajax 无刷新分页效果的实现
思路:先做出传统分页效果,然后重新复制一份Page.class.php类,对它进行修改,把js中的函数传到page类中,把上一页.下一页.首页.尾页.链接页中的url地址改成js控制的函数,模板页面中 ...
随机推荐
- css3边框、阴影
一.图像边框border-image 语法:border-image:border-image-source(图片) || border-image-slice(裁剪位置) || border ...
- RabbitMQ 原文译04--路由
在前一篇文章中我们构建了一个简单的日志系统,我们可以向多个接受者广播消息. 在这篇文章我,我们将要添加一些功能使得针对部分消息的接受成为可能,例如我们只对错误的消息进行磁盘记录,同时又可以把所有的消息 ...
- 2 WPF之XMAL----XMAL概览
转载:http://blog.csdn.net/fwj380891124/article/details/8085458 微软为了把开发模式从网络开发移植到桌面开发和富媒体网络程序的开发上,微软创造了 ...
- 怎么关闭InstantRun
Settings → Build, Execution, Deployment → Instant Run and uncheck Enable Instant Run.
- sqlserver 理解数据集
数据集分四类: 1.A∩B,既是所求数据集既在A中,又在B中 2.A∪B,既所求数据在数据集A中,或在数据集B中 3.A-B,既所求数据在数据集A中,不在数据集B中 4.B-A,既所求数据在数据集B中 ...
- vmware workstation 12 安装windows7 网卡不能安装驱动的问题
在使用vmware workstation 12 安装windows7 之后,网卡不能安装驱动不能正常显示网络连接,需要修改该虚拟机的".vmx"配置文件 在配置文件中添加下面一行 ...
- ubuntu系统安装flashplayer
打开浏览器,输入adobe flashplayer 进入官方网站,下载Linux 32-bit, 简体中文, Firefox,下载.tar.gz包. 然后点击立即下载.下载之后找到解压该文件夹,找到 ...
- 浅析foreach原理
在日常开发工作中,我们发现很多对象都能通过foreach来遍历,比如HashTable.Dictionary.数组等数据类型.那为何这些对象能通过foreach来遍历呢?如果写一个普通的Person类 ...
- jsp页面在IE8下文本模式自动为“杂项(Quirks)”导致页面显示错位
最近在修改网站的响应式的页面时,由于都是套样式页面,修改过程都是粘贴复制,导致了一些细节问题在IE8下暴露出来: 遇到的问题就是在在Chrome,火狐页面都正常,唯独在IE8下页面样式显示乱样了,但是 ...
- Java语言----三种循环语句的区别
------- android培训.java培训.期待与您交流! ---------- 第一种:for循环 循环结构for语句的格式: for(初始化表达式;条件表达式;循环后的操作表达式 ...