捕捉 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 客户端柜架才行。尤其是如何实现同步和异步操作,及两者的结合使用。
<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 客户端柜架才行。尤其是如何实现同步和异步操作,及两者的结合使用。