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.
  • 相关阅读:
    EfCore基本用法
    C#笔试题目总结
    LINQ
    markdown 语法
    打造一款 刷Java 知识的小程序(二)
    为了考PMP,我做了一个刷题小程序
    30分钟全面解析-SQL事务+隔离级别+阻塞+死锁
    反制面试官 | 14张原理图 | 再也不怕被问 volatile!
    50+道大厂JVM面试题 + 11张思维导图就是让你懂JVM~
    【从零开始用Swift开发一个iOS应用(仿微博)】开篇-1. demo上手体验
  • 原文地址:https://www.cnblogs.com/ioriwellings/p/7272152.html
Copyright © 2011-2022 走看看