一个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+" "+"</td>";
trs+="<td>"+($(data.listCompanyProject)[i].projectYear==null?"":$(data.listCompanyProject)[i].projectYear)+" "+"</td>";
trs+="<td>"+($(data.listCompanyProject)[i].projectType==null?"":$(data.listCompanyProject)[i].projectType)+" "+"</td>";
trs+="<td>"+($(data.listCompanyProject)[i].projectFund==null?"":$(data.listCompanyProject)[i].projectFund)+" "+"</td>";
trs+="<td>"+($(data.listCompanyProject)[i].vouchFund==null?"":$(data.listCompanyProject)[i].vouchFund)+" "+"</td>";
trs+="<td>"+($(data.listCompanyProject)[i].appFund==null?"":$(data.listCompanyProject)[i].appFund)+" "+"</td>";
trs+="<td width='8%'>"+$(data.listCompanyProject)[i].fundSource+" "+"</td>";
trs+="</tr>";
$(dataTable).append(trs);
}
$(dataTable).find(".loading").remove();
isSended=false;
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
isSended=false;
alert("请求失败!");
}
});
}