• 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.
  • 相关阅读:
    C语言 assert 函数
    C语言 exit 函数
    C语言 main 函数参数 main(int argc, char *argv[])
    《一线架构师实践指南》读后感(一)
    机器学习十讲第八讲
    机器学习十讲第七讲
    Python通过IMAP实现邮箱客户端
    ABAP-PS操作
    ABAP-AES加解密
    ABAP-HmacSHA256
  • 原文地址:https://www.cnblogs.com/ioriwellings/p/7272152.html
Copyright © 2020-2023  润新知