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被觸發. 這是正常的流程.javascript

還有另外一種狀況發生, 在EndRequest函數中腳本觸發了另外一次網絡請求,這時 beginRequest 被觸發, 網絡請求開始的同時,endRequest隨後也會被觸發,可是網絡是Pending狀態.java

也就是說sender._request 請求對象不爲空,在請求中,以後服務器返回數據,endRequest又被真正觸發,這時 request爲null, 也就是服務器

Sys.WebForms.PageRequestManager.getInstance().get_isInAsyncPostBack()爲false.
相關文章
相關標籤/搜索