zoukankan      html  css  js  c++  java
  • UpdatePanel 控件,客户端事件生命周期踩坑

     1 <script type="text/javascript" language="javascript">
     2 
     3             Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(function (sender, args)
     4             {
     5                 window.ClearAllInpuTextField();
     6                 if (sender._activeElement.id == "btnPrint")
     7                 {
     8                     window.showOnloading("获取快递单号,打印处理中......");
     9                 }
    10             });
    11 
    12             Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
    13 
    14             function EndRequestHandler(sender, args)
    15             {
    16                 var prm = Sys.WebForms.PageRequestManager.getInstance();
    17                 if (sender._request == null)
    18                 {
    19                     window.removeload();
    20                 }
    21                 if (args.get_error() != undefined)
    22                 {
    23                     var errorMessage;
    24                     if (args.get_response().get_statusCode() == '200')
    25                     {
    26                         errorMessage = args.get_error().message;
    27                     }
    28                     else
    29                     {
    30                         // Error occurred somewhere other than the server page.
    31                         errorMessage = 'An unspecified error occurred. ';
    32                     }
    33                     args.set_errorHandled(true);
    34                     alert(errorMessage);
    35                 }
    36             }
    37     </script>

    在更新面板中正常的按钮事件中, 点击开发触发网络请求.beginRequest被触发, 当服务器端返回响应数据时,endRequest被触发. 这是正常的流程.

    还有另一种情况发生, 在EndRequest函数中脚本触发了另一次网络请求,这时 beginRequest 被触发, 网络请求开始的同时,endRequest随后也会被触发,但是网络是Pending状态.

    也就是说sender._request 请求对象不为空,在请求中,之后服务器返回数据,endRequest又被真正触发,这时 request为null, 也就是

    Sys.WebForms.PageRequestManager.getInstance().get_isInAsyncPostBack()为false.
  • 相关阅读:
    基于Apache+php+mysql的许愿墙网站的搭建
    关于php留言本网站的搭建
    httpd服务的安装、配置
    linux下面桌面的安装
    时间同步ntp服务的安装与配置
    通过挂载系统光盘搭建本地yum仓库的方法
    linux系统root用户忘记密码的重置方法
    linux系统的初化始配置
    Linux下通过PXE服务器安装Linux系统
    Linux设置RSA密钥登录
  • 原文地址:https://www.cnblogs.com/ioriwellings/p/7272152.html
Copyright © 2011-2022 走看看