jquery ajax异步获取数据,防止重复获取

4 篇文章 0 订阅
2 篇文章 0 订阅

一个onclick事件,当发送一个ajax请求时,如果该请求没有返回,则不进行 下一次的请求。该问题的处理非常类似多线程中对资源共享共享的处理。下面代码中 isSended 标志类似多线程中的锁

 

代码取自jxwpgsh 中站内搜索中查询单位的结果列表页面

 

 

var isSended=false;//类似多线程中的锁
function getProject(obj,company){
	var name = encodeURI(encodeURI(company));
	var dataTable=$(obj).next().next();
	$(dataTable).empty();
	if($(dataTable).css("display")!="block"){
	     var loadingstr = "<tr class=\"loading\"><td>Loading...</td></tr>";
	     $(dataTable).append(loadingstr);
	     $(dataTable).css("display","block");
        if(isSended==false){
          getProjectAjax(name,dataTable);
        }
	
	}else{
		$(dataTable).css("display","none");
		$(dataTable).fadeOut(2000);
	}
}

function getProjectAjax(name,dataTable){
         isSended=true;
         var now=new Date().getTime();//加个时间戳表示每次是新的请求
	     $.ajax({
			 type: "POST",
			 url: "companyProject.action?companyName="+name+"&now="+now+"",
			 async: true,
			 dataType: "json",
			 success: function(data){
				//alert($(data.listCompanyProject).length);
				//alert($(data.listCompanyProject)[0].projectName);
				$(dataTable).append("<tr class=\"cen\"><th>项目名称</th><th>项目年度</th><th>项目类型</th><th>申报资金</th><th>核定资金</th><th>拨付资金</th> <th>来源</th></tr>");
				for(i=0;i<$(data.listCompanyProject).length;i++){
					var trs = "<tr  style=\"cursor:pointer;\" οnclick=\"subButton('listform','"+$(data.listCompanyProject)[i].url+"')\">";
					trs+="<td align='left'>"+$(data.listCompanyProject)[i].projectName+"&nbsp;"+"</td>";
					trs+="<td>"+($(data.listCompanyProject)[i].projectYear==null?"":$(data.listCompanyProject)[i].projectYear)+"&nbsp;"+"</td>";
					trs+="<td>"+($(data.listCompanyProject)[i].projectType==null?"":$(data.listCompanyProject)[i].projectType)+"&nbsp;"+"</td>";
					trs+="<td>"+($(data.listCompanyProject)[i].projectFund==null?"":$(data.listCompanyProject)[i].projectFund)+"&nbsp;"+"</td>";
					trs+="<td>"+($(data.listCompanyProject)[i].vouchFund==null?"":$(data.listCompanyProject)[i].vouchFund)+"&nbsp;"+"</td>";
					trs+="<td>"+($(data.listCompanyProject)[i].appFund==null?"":$(data.listCompanyProject)[i].appFund)+"&nbsp;"+"</td>";
					trs+="<td width='8%'>"+$(data.listCompanyProject)[i].fundSource+"&nbsp;"+"</td>";
					trs+="</tr>";
					$(dataTable).append(trs);
			   }
			   $(dataTable).find(".loading").remove();
			    isSended=false;
			 },
			       
			 error: function(XMLHttpRequest, textStatus, errorThrown) {
			    isSended=false;
			    alert("请求失败!");
			 }
		});
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值