关于绑定点击提交AJAX,获取数据的事件重复执行的问题

问题描述

关于绑定点击提交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"]+'">查看详情&gt;&gt;</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"]+'">查看详情&gt;&gt;</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点击也是这样,我想应该与标签无关
解决方案八:
解决了吗,我也遇到这个问题了

时间: 2024-11-29 10:30:14

关于绑定点击提交AJAX,获取数据的事件重复执行的问题的相关文章

Ajax获取数据然后显示在页面的实现方法_AJAX相关

主要功能流程介绍 循环获取列表数据 点击列表数据进入详情页 点击报名参加弹出报名成功提示框 点击提示框中的确定按钮,跳回列表页 代码实现流程和解说 一.列表页 1.访问链接list.php时判断是pc端还是客户端 $user_agent_arr = mall_get_user_agent_arr(); if(MALL_UA_IS_PC == 1) { //****************** pc版 ****************** include_once './list-pc.php';

Ajax获取数据然后显示在页面的实现方法

主要功能流程介绍 循环获取列表数据 点击列表数据进入详情页 点击报名参加弹出报名成功提示框 点击提示框中的确定按钮,跳回列表页 代码实现流程和解说 一.列表页 1.访问链接list.php时判断是pc端还是客户端 $user_agent_arr = mall_get_user_agent_arr(); if(MALL_UA_IS_PC == 1) { //****************** pc版 ****************** include_once './list-pc.php';

jquery ajax-jQuery ajax获取数据问题

问题描述 jQuery ajax获取数据问题 程序片段如下: var data_1; $.post("getdata.php",function(string_1){ data_1 = string_1; });为什么string_1的内容无法被获取呢?_ 要想获取其内容,应该如何做呢?麻烦指点下! getdata.php: <?php_ $con = mysql_connect('localhost','root'); mysql_select_db('my_db',$con)

php使用CURL模拟GET与POST向微信接口提交及获取数据的方法_php实例

本文实例讲述了php使用CURL模拟GET与POST向微信接口提交及获取数据的方法.分享给大家供大家参考,具体如下: php CURL函数可以模仿用户进行一些操作,如我们可以模仿用户提交数据也可以模仿用户进行网站访问了,下面我们来介绍利用CURL模拟进行微信接口的GET与POST例子,例子非常的简单就两个: Get提交获取数据 /** * @desc 获取access_token * @return String access_token */ function getAccessToken()

自动补全(bootstrap-typeahead)利用ajax获取数据,求教

问题描述 自动补全(bootstrap-typeahead)利用ajax获取数据,求教 自动补全(bootstrap-typeahead)利用ajax获取数据,求教 解决方案 参考下帅帅的冠军叔叔的bloghttp://www.cnblogs.com/haogj/p/3376874.html 解决方案二: bootstrap的官方例程中是有的-

javascript 获取多条数据(模拟ajax获取数据)_javascript技巧

()'>于发表: 获取多条数据(模拟ajax获取数据)

页面向下滚动ajax获取数据的实现方法(兼容手机)_javascript技巧

页面向下滚动ajax获取数据的实现方法(兼容手机) $(window).scroll(function () { var scrollTop = $(this).scrollTop(); var scrollHeight = $(document).height(); var windowHeight = $(this).height(); if (scrollTop + windowHeight >= scrollHeight) { loadPromotions(); } }); var pa

php使用CURL模拟GET与POST向微信接口提交及获取数据的方法

本文实例讲述了php使用CURL模拟GET与POST向微信接口提交及获取数据的方法.分享给大家供大家参考,具体如下: php CURL函数可以模仿用户进行一些操作,如我们可以模仿用户提交数据也可以模仿用户进行网站访问了,下面我们来介绍利用CURL模拟进行微信接口的GET与POST例子,例子非常的简单就两个: Get提交获取数据 /** * @desc 获取access_token * @return String access_token */ function getAccessToken()

ASP.NET 点击按钮 action获取数据

问题描述 我系统尝试下同步表单提交的时候,能否将按钮所在行的数据提交到后台,并且后台actino能获取submit按钮的属性值,例如name.tooltip等以下是代码:@if(ViewData["dtSource"]!=null){<formid="formTable"action="/StudentMS/EditStudent"method="post"><tablewidth="500px&q