`
zhouchaofei2010
  • 浏览: 1088501 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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

 
阅读更多

一个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;\" onclick=\"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("请求失败!");
			 }
		});
}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics