jQuery技术:异步回发无法正常工作

我在我的contentplaceholder中使用这个量表。

https://www.dariancabot.com/projects/jgauge_wip/

MyControl.ascx:

     <div id="_ctl" class="jgauge" >
$(document).ready(function () { var isPostBack = ; if(isPostBack == "true") { Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler); prm.add_endRequest(onEndRequest); } else{ var _ctl; _ctl = new jGauge(); _ctl.id = '_ctl'; _ctl.init(); } }); function EndRequestHandler(sender, args){ var _ctl; _ctl = new jGauge(); _ctl.id = '_ctl'; _ctl.init(); }

在MyPage.aspx中:(包含动态创建的表,其中包含多个此类控件。将生成的表放在占位符上)

          

我在母版页上有脚本管理器:

  

但是在异步回发(击中’myBtn’)之后,测量仪就会消失。 请帮忙。 几天后试图解决它。

    我能够通过以下方式解决这个问题:

     $(document).ready(function () { Sys.WebForms.PageRequestManager.getInstance() .add_endRequest(<%=this.ClientID%>_ctlEndRequestHandler); var <%=this.ClientID%>_ctl; <%=this.ClientID%>_ctl = new jGauge(); <%=this.ClientID%>_ctl.id = '<%=this.ClientID%>_ctl'; <%=this.ClientID%>_ctl.init(); }); function <%=this.ClientID%>_ctlEndRequestHandler(sender, args){ var <%=this.ClientID%>_ctl; <%=this.ClientID%>_ctl = new jGauge(); <%=this.ClientID%>_ctl.id = '<%=this.ClientID%>_ctl'; <%=this.ClientID%>_ctl.init(); } 

    唯一真正的区别是不再发生回发检查。 你的根本问题是$(document).ready不会触发部分回发,这意味着isPostBack实际上永远不会被设置为true。 因此, Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler); 永远不会执行,这意味着你的EndRequestHandler从未运行过。

    编辑

    另一个问题是,如果您同时拥有多个控件,则命名EndRequestHandler方法可能会导致问题。 为了解决这个问题,我将<%=this.ClientID%>_ctl附加到EndRequestHandler的名称以确保它是唯一的。

    更多信息:

    我如何一起使用jQuery $(document).ready和ASP.NET UpdatePanel?

      以上就是jQuery教程分享异步回发无法正常工作相关内容,想了解更多jQuery开发(异常处理)及jQuery教程关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/jquerytutorial/547895.html

      (0)
      上一篇 2021年1月13日
      下一篇 2021年1月13日

      精彩推荐