循环发送ajax请求的解决方法
来源:互联网 发布:怎样经营好淘宝网店 编辑:程序博客网 时间:2024/05/14 20:01
在系统开发中(前台页面使用jquery)遇到了以下需求,要根据多个主机名称去得到每一个主机的设备id,
一开始我用的是在for循环里面发送多个ajax的请求方式,但这种方式有很多缺点,首先因为是异步,
可能造成请求结果丢失,其次如果将请求方式改为同步,则会造成浏览器假死现象。
后来经过百度+google,得到了一种比较好的解决方法,就是使用递归。代码如下:
var currentIndex=0;//退出递归的条件变量
function newRequest(){
if(currentIndex>=infos.length){ //infos是存放主机名称的数组
return;
}
var vmName = infos[currentIndex].name;
$.ajax({
url:"/cloudportal/rest/interfaces/getVwDeviceInfo?dev_name="+vmName,
contentType:'application/json;charset=UTF-8',
type:"get",
dataType:"json",
complete:function(a,b){
currentIndex++;
var json = $.parseJSON(a.responseText);
if(json.success===true){
var xmlDoc = $.parseXML(json.result);
var $xml = $(xmlDoc);
var $objid = $xml.find('objid');
var objid = $objid.text();
$("<option value=\""+objid+"\">"+dis_name+"</option>").appendTo($("#J_zhuji_name"));
}
newRequest();
}
});
}
newRequest();
一开始我用的是在for循环里面发送多个ajax的请求方式,但这种方式有很多缺点,首先因为是异步,
可能造成请求结果丢失,其次如果将请求方式改为同步,则会造成浏览器假死现象。
后来经过百度+google,得到了一种比较好的解决方法,就是使用递归。代码如下:
var currentIndex=0;//退出递归的条件变量
function newRequest(){
if(currentIndex>=infos.length){ //infos是存放主机名称的数组
return;
}
var vmName = infos[currentIndex].name;
$.ajax({
url:"/cloudportal/rest/interfaces/getVwDeviceInfo?dev_name="+vmName,
contentType:'application/json;charset=UTF-8',
type:"get",
dataType:"json",
complete:function(a,b){
currentIndex++;
var json = $.parseJSON(a.responseText);
if(json.success===true){
var xmlDoc = $.parseXML(json.result);
var $xml = $(xmlDoc);
var $objid = $xml.find('objid');
var objid = $objid.text();
$("<option value=\""+objid+"\">"+dis_name+"</option>").appendTo($("#J_zhuji_name"));
}
newRequest();
}
});
}
newRequest();
- 循环发送ajax请求的解决方法
- 循环发送ajax请求的解决方法
- 循环发送ajax请求
- JavaScript for循环中发送AJAX请求的问题
- ajax 在IE9浏览器下不发送请求的解决方法
- jquery 循环调用ajax发送请求
- 循环发送AJAX请求,变量问题
- ajax发送请求的方式
- JavaScript for循环中使用Ajax发送请求
- JavaScript发送AJAX请求的代码
- ajax发送异步请求的步骤
- Ajax发送请求的编码问题
- Jquery Ajax发送请求的方法
- ajax发送异步请求的步骤
- Ajax发送异步请求的完整过程
- 防止重复发送 Ajax 请求的解决方案
- ajax重复发送请求的问题
- 基础Ajax发送请求
- 如何使Android应用程序获取系统权限来修改系统时间
- Informatica安装客户端
- 安装JAVA,配置
- 3DES解密算法实现
- php缓存类
- 循环发送ajax请求的解决方法
- 表单的ajax验证,以post方式
- 关于 swap 分区的说明
- 从Windows下的命令行启动MYSQL
- Vb中使用报表控件(二)
- Informatica配置客户端
- s5pv210平台WCDMA模块[华为E1750]调试成功-基于x210ii开发板
- Eclipse打不开。The Eclipse executable launcher was unable to locate its companion shared library
- 计算机系统中的异常控制流