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.