最近在学asp.net ajax,看到别人写的代码中有这么几行:
Sys .WebForms .PageRequestManager.getInstance().add_endRequest(EndRequestHandler); //在回发请求完成处理后即引发
// endRequest 事件,触发EndRequestHandler函数
function EndRequestHandler(sender, args)
{
if (args.get_error() != undefined && args.get_error().httpStatusCode == '500')
{
var errorMessage = args.get_error().message
args.set_errorHandled(true);
ToggleAlertDiv('visible');
$get(messageElem).innerHTML = '"' +
errorMessage + '" ' + errorMessageAdditional;
}
}
不太明白args.get_error()是什么意思,到网上也没有查到什么详细的解释,后来仔细查看Msdn查出了详细的解释,args代表的是EndRequestEventArgs类
EndRequestEventArgs类有个名为error的属性,msdn上是这样解释的,若要获取或设置客户端 API 属性的属性值,必须调用以get_ 和 set_ 为名称前缀的属性访问器方法。例如,若要获取或设置属性cancel 的值,需要调用get_cancel 或 set_cancel 方法。 msdn上有相应的链接http://msdn.microsoft.com/zh-cn/library/bb311022.aspx
还看了如何在asp.net ajax中调用web service ,在网站项目中新建个web service 页面 命名为Service.asmx 页面代码如下:
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
//若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
[System.Web.Script.Services.ScriptService]
public class Service : System.Web.Services.WebService {
public Service () {
//如果使用设计的组件,请取消注释以下行
//InitializeComponent();
}
[WebMethod]
public string HelloWorld(string s)
{
return "Hello" + s;
}
}
在Default3.aspx中的客户端调用Web Service 代码如下:
<script type="text/javascript">
function OnbuttonGo_click()
{
requestSimpleService = Service.HelloWorld(document.getElementById('inputName').value ,
OnRequestComplete);
return false;
}
function OnRequestComplete(result) //指定当它从服务返回时负责处理响应的方法
{
alert(result);
}
</script>
一开始有点不明白,在Service.asmx中定义的HelloWorld方法定义中只有一个参数,怎么在Default3.aspx中调用HelloWorld方法时多了一个参数?
最后在msdn中找到了答案,对 Web 服务方法的调用是使用代理类进行的。有关成功回调函数、失败回调函数和用户上下文的信息都通过在调用中使用附加参数进行传递,
OnRequestComplete函数的作用就是在回调成功的情况下触发的,msdn上的详细解释 http://msdn.microsoft.com/zh-cn/library/bb398995.aspx