问题描述
关于绑定点击提交AJAX,获取数据的getJSONData事件重复执行,而且执行的次数还累加,参数在A标签这几个值里乱变这里上代码://加载列表数据,获取JSON数据functiongetJSONData(pn,canshu){$.ajax({type:"get",url:"ajax/Handler.ashx?time="+newDate().getTime(),data:{tj1:canshu,change:"change"},async:false,cache:false,dataType:'json',success:function(data){alert(data);alert("加载数据");$("#myTabContent#home#tptextlist").html("");vartotalCount=data.length;//总记录数varpageSize=6;//每页显示几条记录varpageTotal=Math.ceil(totalCount/pageSize);//总页数varstartPage=pageSize*(pn-1);varendPage=startPage+pageSize-1;varjson=data;varpicurl,jianjie;if(pageTotal==1){for(vari=0;i<totalCount;i++){varobj=json[i];if(obj["picurl"]==null||obj["picurl"]==""){picurl="images/zw.jpg";}else{picurl=obj["picurl"];}if(obj["jianjie"]==null||obj["jianjie"]==""){jianjie="暂无简介";}else{jianjie=obj["jianjie"];}$("#myTabContent#home#tptextlist").append('<tableclass="unitlist"border="0"cellpadding="0"cellspacing="0"><tr><tdalign="center"class="d1"rowspan="3"valign="middle"><ahref="content.aspx?id='+obj["id"]+'"><imgalt=""height="120px"src="'+picurl+'"width="150px"/></a></td><tdclass="d2"><ahref="content.aspx?id='+obj["id"]+'">'+obj["title"]+'</a></td></tr><tr><tdalign="left"class="d3"valign="top"><pstyle="line-height:30px;text-indent:2em;">'+jianjie+'</p></td></tr><tr><tdheight="25px"style="text-align:right;"><aclass="yq"href="content.aspx?id='+obj["id"]+'">查看详情>></a></td></tr></table>');}}else{for(varj=startPage,k=0;j<endPage,k<pageSize;j++,k++){if(j==totalCount){break;//当遍历到最后一条记录时,跳出循环}varobj=json[j];if(obj["picurl"]==null||obj["picurl"]==""){picurl="images/zw.jpg";}else{picurl=obj["picurl"];}if(obj["jianjie"]==null||obj["jianjie"]==""){jianjie="暂无简介";}else{jianjie=obj["jianjie"];}$("#myTabContent#home#tptextlist").append('<tableclass="unitlist"border="0"cellpadding="0"cellspacing="0"><tr><tdalign="center"class="d1"rowspan="3"valign="middle"><ahref="content.aspx?id='+obj["id"]+'"><imgalt=""height="120px"src="'+picurl+'"width="150px"/></a></td><tdclass="d2"><ahref="content.aspx?id='+obj["id"]+'">'+obj["title"]+'</a></td></tr><tr><tdalign="left"class="d3"valign="top"><pstyle="line-height:30px;text-indent:2em;">'+jianjie+'</p></td></tr><tr><tdheight="25px"style="text-align:right;"><aclass="yq"href="content.aspx?id='+obj["id"]+'">查看详情>></a></td></tr></table>');}}if(pageTotal==0){$(".page-count").text("1");}else{$(".page-count").text(pageTotal);}$(".data-count").text(totalCount);alert("加载数据尾部");},error:function(msg){alert("系统发生错误!");}});}functiongetPage(canshu){$.ajax({type:"get",url:"ajax/change.ashx?time="+newDate().getTime(),data:{tj:canshu,change:"change"},async:false,cache:false,dataType:'json',success:function(data){alert(data);if(data==""){alert("对不起,暂时没有该类型的数据");}pn=1;vartotalCount=data.length;//总记录数varpageSize=6;//每页显示几条记录varpageTotal=Math.ceil(totalCount/pageSize);//总页数$("#next").click(function(){if(pn==pageTotal){alert("后面没有了");pn=pageTotal;}else{pn++;gotoPage(pn,canshu);}});$("#prev").click(function(){if(pn==1){alert("前面没有了");pn=1;}else{pn--;gotoPage(pn,canshu);}})$("#firstPage").click(function(){pn=1;gotoPage(pn,canshu);});$("#lastPage").click(function(){pn=pageTotal;gotoPage(pn,canshu);});$("#page-jump").click(function(){if($(".page-num").val()<=pageTotal&&$(".page-num").val()!=''){pn=$(".page-num").val();gotoPage(pn,canshu);}else{alert("您输入的页码有误!");$(".page-num").val('').focus();}});$("#firstPage").trigger("click");},error:function(msg){alert("系统发生错误!");}});}//重新加载functiongotoPage(pn,canshu){$(".current-page").text(pn);getJSONData(pn,canshu)}$(function(){//确定当前所在的模块vartype="AJAX";varflag;$.ajax({type:"get",url:"ajax/list.ashx",data:{type:type,lx:"mode"},dataType:'text',success:function(data){if(data=="xingqu"){flag="xingqu";$("#nav.dropdown").eq(0).addClass("active");//确定当前模块mode下的type情况$.ajax({type:"get",url:"ajax/list.ashx",data:{flag1:flag,lx:"type"},dataType:'json',success:function(data1){varjson=data1;for(vari=0;i<json.length;i++){varobj=json[i];$("#myTab").append('<liclass="change"><ahref="#home"data-toggle="tab">'+obj["type"]+'</a></li>');//unescape解码,转换为中文进行判断if(unescape(type)==obj["type"]){$("#myTab").find("li").eq(i).addClass("active");}}//加载json数据getPage(unescape(type));//这里第一次进来时,获取地址栏的参数,加载数据时正常的$("#myTabli.changea").click(function(){//关键就是这个执行getPage事件时正常,而到getJSONData时就参数值都变了,而且还莫名其妙地执行了两遍getPage(),第二次的参数是正确的。//之后这个A标签,每点击一次执行getJSONData事件的次数就累加一次。真是醉了!vartjz=$(this).text();alert(tjz);getPage(tjz);});$("#navli#test").click(function(){//此处测试BUGvartjz="AJAX";alert(tjz);getPage(tjz);});$("#tj").click(function(){vartjz="AJAX";alert(tjz);getPage(tjz);});},error:function(msg){alert("系统发生错误!");}});}elseif(data=="news_type"){flag="news_type";$("#nav.dropdown").eq(1).addClass("active");//确定当前模块mode下的type情况$.ajax({type:"get",url:"ajax/list.ashx",data:{flag1:flag,lx:"type"},dataType:'json',success:function(data1){varjson=data1;for(vari=0;i<json.length;i++){varobj=json[i];$("#myTab").append('<liclass="change"><ahref="#home"data-toggle="tab">'+obj["type"]+'</a></li>');//unescape解码,转换为中文进行判断if(unescape(type)==obj["type"]){$("#myTab").find("li").eq(i).addClass("active");}}//加载json数据getPage(unescape(type));$("#myTabli.changea").click(function(){vartjz=$(this).text();alert(tjz);getPage(tjz);});},error:function(msg){alert("系统发生错误!");}});}elseif(data=="mode"){略。}},error:function(msg){alert("系统发生错误!");}});});PS:求大神打救。。。
解决方案
解决方案二:
补充一下后台代码:publicclasschange:IHttpHandler{DataSetds=newDataSet();JavaScriptSerializerjss=newJavaScriptSerializer();List<Object>lists=newList<Object>();staticstringtjz;publicvoidProcessRequest(HttpContextcontext){context.Response.ContentType="text/plain";context.Response.Buffer=true;context.Response.ExpiresAbsolute=DateTime.Now.AddDays(-1);context.Response.AddHeader("pragma","no-cache");context.Response.AddHeader("cache-control","");context.Response.CacheControl="no-cache";stringcommand=context.Request["change"].ToString();if(command!=null){tjz=context.Request["tj"].ToString();}Ajax_Datalist(context);}//ajax局部动态刷新datalist数据publicvoidAjax_Datalist(HttpContextcontext){ds=ajax.Ajax_Query_Info(tjz);foreach(DataRowdrinds.Tables[0].Rows){varobj=new{id=dr["id"],jianjie=dr["jianjie"],picurl=dr["picurl"],title=dr["title"]};lists.Add(obj);}stringresult1=jss.Serialize(lists);context.Response.Write(result1);}publicboolIsReusable{get{returnfalse;}}}publicclassHandler:IHttpHandler{DataSetds=newDataSet();JavaScriptSerializerjss=newJavaScriptSerializer();List<Object>lists=newList<Object>();staticstringcanshu;publicvoidProcessRequest(HttpContextcontext){context.Response.ContentType="text/plain";context.Response.Buffer=true;context.Response.ExpiresAbsolute=DateTime.Now.AddDays(-1);context.Response.AddHeader("pragma","no-cache");context.Response.AddHeader("cache-control","");context.Response.CacheControl="no-cache";stringcommand=context.Request["change"].ToString();if(command!=null){canshu=context.Request["tj1"].ToString();}Ajax_Datalist(context);}//ajax局部动态刷新datalist数据publicvoidAjax_Datalist(HttpContextcontext){ds=ajax.Ajax_Query_Info(canshu);foreach(DataRowdrinds.Tables[0].Rows){varobj=new{id=dr["id"],jianjie=dr["jianjie"],picurl=dr["picurl"],title=dr["title"]};lists.Add(obj);}stringresult=jss.Serialize(lists);context.Response.Write(result);}publicboolIsReusable{get{returnfalse;}}}
解决方案三:
你页面上只保留这个出问题的代码块,其他都先删除掉,调试看看。
解决方案四:
贴这么多干嘛。。。。哪里重复了。。。。
解决方案五:
太多了。懒得看,你在几个方法内,增加alert(1),alert(2),然后看哪些方法被调用了。然后可以分析出哪些方法被重复调用,然后在看是哪些方法执行的这些重复调用的方法
解决方案六:
好长的代码,
解决方案七:
动态加载A标签后,绑定点击事件,也就是重新获取数据,就是这里有问题$("#myTabli.changea").click(function(){vartjz=$(this).text();alert(tjz);getPage(tjz);});getPage(tjz)执行到getJSONData的事件,这个tjz的参数不知道为何变了,而且这个getJSONData这个方法执行了2次。第一次参数会变成其他A标签的值,第二次又变成正确的值再点击A标签的话,getJSONData(pn,canshu)这个事件执行了3次,参数值会变成其他A标签的值之后如果还是进行这个操作,getJSONData(pn,canshu)这个事件的执行次数累加1,变成4次这样的话根本到不到想要的数据我自己调试了了两天,最后我觉得可能是什么冲突了,同一个方法加载数据居然绑定到事件里就出错了,我换成button点击也是这样,我想应该与标签无关
解决方案八:
解决了吗,我也遇到这个问题了