您的位置:首页 > 其它

知识积累日常_17.12.1_利用for循环 循环发送ajax

2017-12-01 11:02 375 查看
需求:最近项目需要循环发送ajax向后台发送请求导出文件。有多个业务线,如果一次性全部下载后台负荷会过大,所以希望前台根据每条业务线单独发送请求,后台进行区分下载。我上网查阅了很多资料,下面附上代码。

原理:原理是运用递归,来发送ajax,把ajax放在for循环中,达到根据业务线循环发送的目的。

缺点:后台人员可以接受到我的参数,但是导出文件却无反应,目前正在研究。

代码:

$("#downloadAll").click(function (){//全部下载按业务线 单独下载
begin=$("#beginDate").val(),end=$("#endDate").val();
if(hasValue(begin) && hasValue(end)){
if(begin>end){msg='日期起始值不得大于结束值'}
}else if( !hasValue(begin) && !hasValue(end)){
msg='请选择日期范围';
}else if(!hasValue(end)){
msg='请选择日期结束值';
}else{
msg='请选择日期起始值';
}

var index=0;
sendAjax();
function sendAjax()
{
var list = new Array(); //定义数组
$("#yewuxian option").each(function(){ //遍历所有option
var txt = $(this).val(); //获取option值
if(txt!=''){
list.push(txt); //添加到数组中
}
})
var yewuxianId = list[index];//取到每个业务线id
var item = productDic(yewuxianId);//取到productDicId
var item2;//定义变量
if(index >= list.length ) //递归退出条件
{
return;
}
for(var i=0;i<item.length;i++){//循环业务线产品
item2 = item[i].id;
$.ajax(
{
url : "${pageContext.request.contextPath}/wallet/report/downloadCheckFile",
type : "POST",
async:false,
data :{
"merchantName" :list[index],
"productName" : item2,
"startTime" : begin,
"endTime" : end
},
success : function(data)
{
console.log(list[index] + ',' + item2 );
},
error : function()
{
console.log("fail"+list[index] + ',' + item2 );
}
});
}
index++;
sendAjax();
}

})
});

  

   

   

        

   

 

        
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: