代码改变世界

捕捉 Asp.net ajax 客户端请求过程

2008-03-28 15:14  Koy  阅读(433)  评论(0编辑  收藏  举报
以下代码可以在使用 MS Asp.net ajax UpdatePanel 的过程中捕捉到触发某次PostBack请求的开始和结束事件和对象。常用于在服务器端处理完毕后通知客户端做善后工作。

<script type="text/javascript">
    Type.registerNamespace("ScriptLibrary");
   
    var postbackElement;
    Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(beginRequest);
    Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(pageLoaded);
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequest);
   
    function beginRequest(sender, args)
    {
        postbackElement = args.get_postBackElement();
    }
    function pageLoaded(sender, args)
    {
        try
        {
            funcResizeFrame();
           
            //a[0];
           
            FocusElement();
        }
        catch(e)
        {
            alert("Error");
        }
       
    }
    function endRequest(sender, args)
    {
        FocusElement();
        if (args.get_error() != undefined && args.get_error().httpStatusCode == '500')
        {
           var errorMessage = args.get_error().message
           args.set_errorHandled(true);
           alert("errorMessage" + errorMessage);
//           ToggleAlertDiv('visible');
//           $get(messageElem).innerHTML = '"' + errorMessage + '" ' + errorMessageAdditional;
        }
    }
   
    function FocusElement()
    {
     /*
  txtIDNum
  txtBrance
  btnCreateDummyID
  
  txtBorName
  */
  
        if (typeof(postbackElement) === "undefined")
        {
            return;
        }
        else if(postbackElement.id.toLowerCase().indexOf('txtidnum') > -1)
        {
            document.getElementById('<%= txtBrance.ClientID %>').focus();
        }else if(postbackElement.id.toLowerCase().indexOf('txtbrance') > -1){
   document.getElementById('<%= btnCreateDummyID.ClientID %>').focus();
        }else if(postbackElement.id.toLowerCase().indexOf('btncreatedummyid') > -1){
   document.getElementById('<%= txtBorName.ClientID %>').focus();
        }
    }
   
</script>

看来真的要好好了解下 MS asp.net ajax 客户端柜架才行。尤其是如何实现同步和异步操作,及两者的结合使用。