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