ASP.NET之AJAX Extensions的 Javascript调用
上次在修改评论模块的验证机制时,Ajax用到了AJAX Extensions。第一次把它用到实际作品中,也就难免犯错误,当时耗费了我不少的力气才找出错误的根源。故在此谈谈用后的一点思绪。
1.如果web服务中暴露给客户端调用的方法中需要用到Session,则需要设置EnableSession。如:
复制代码 [WebMethod(EnableSession = true)] public string DeleteCommentByID(int replayID) { //删除评论
}
每一个暴露给客户端的方法或者类都需要关键字[WebMethod],同时需要引入 System.Web.Script.Services空间,以及添加关键字[ScriptService]
2.如果前台Javascript调用后台类中的方法,传递的参数个数不一致,会导致页面下载、显示缓慢,呈现服务器忙的状态;运行调用方法的Javascript,IE提示错误“缺少对象”。
前台调用后台类方法的一般格式为[nameSpace].className.方法名称(param1,param2,……,succeededCallback, failedCallback, userContext).
- nameSpace是命名空间;
- className是类名称;
- param1、param2……是传递的参数;
- succeededCallback是成功调用后执行的Javascript函数;
- failedCallback是调用失败后要执行的Javascript函数;
- userContext是用户上下文对象。
在上述格式中,命名空间、succeededCallback、failedCallback、userContext是可选的。需要注意的是如果省略了 前面的某一个参数,却又保留了后面的参数,则需要为前面的参数留下空位置。如:[nameSpace].className.方法名称 (param1,param2,……,succeededCallback, , userContext)中省略了failedCallback但保留了userContext,则需要用双逗号留下空位置。
我不喜欢用UpdatePanel,因为我不能接受这个控件带来的程序性能。虽然说用了它可以大大减轻编程人员的负担——一个对Javascript一点 也不了解的人可以利用这个控件生成具有强大功能的Ajax页面,因为编程人员不必为Ajax页面写一句Javascript代码,可想而知此控件功能的牛 ×。不过如果遇到大量如同表格类数据,又需要分页、排序、修改、删除等功能的,如果对性能要求不是很高还是可以考虑它的,毕竟可以为我们节省开发时间。提 高了开发效率就降低了程序的运行性能,鱼和熊掌难以兼得啊。