



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
AJAX 大数据量处理看来一篇淘宝网关于大数据量处理的解决方案的文章,感觉思路不错,确实值得学习,下面总结成自己的经验。主要是思想。思路如下:将大数据量数据进行分割返回,例如需要返回100条数据,我们可以通过10次请求来进行返回数据。每次返回数据的时候其中包括数量的总行数、返回当前数据的位置、此次返回数据的数量。例如:TotalRowsCount:100,CurrentRowsIndex:60,CurrentRowsCount:10。代表总行数:100,当前行数已经返回到:60,此次返回数量10。var ajaxUrl = /Common/AJAXCommon.aspx;var jsonEntity;$(#btn_GetLargeData).click(function() ExecAjax(1););function ExecAjax(index) $.ajax( type: POST,url: ajaxUrl,data: Mode=&index= + index,dataType: JSON,success: function(msg) eval(jsonEntity = + msg); FullTable(); if (jsonEntity.CurrentRowsIndex jsonEntity.RowsCount) ExecAjax(index + 1); ,error: function() alert(Error); );function FullTable() var str = ;for (var i = 0; i jsonEntity.DetailList.length; i+) str += ;str += + jsonEntity.DetailListi.Index + ;str += + jsonEntity.DetailListi.Title + ;str += + jsonEntity.DetailListi.Content + ;str += ;$(#EntityTable).append(str);.Net AJAX操作与反射的结合应用曾经在使用.Net中调用Ajax的时候会专门写一个页面,然后通过OperAjax(int ajaxOperType).来进行操作。在这个函数当中使用大量的switch case 语句。从而使这个函数过于臃肿。难以维护,扩展,可读性也很差。代码protected void Page_Load(object sender, EventArgs e) if (Request.ParamsMode = null) / 错误处理return; int ajaxOperType = Convert.ToInt32(Request.ParamsMode.ToString(); this.OperAjax(ajaxOperType); / / 原始处理方式。 / / 执行类型 private void OperAjax(int ajaxOperType) string returnValue = ; switch (ajaxOperType) / 获取用户名执行的函数 case (int)Core.Enum.AjaxOperType.GetUserName: returnValue += Result : 关羽; Response.Write(returnValue); break; / 判断姓名是否存在执行的函数 case (int)Core.Enum.AjaxOperType.ExistsUserName: if (Request.ParamsValue != null & Request.ParamsValue.ToString() = 貂蝉) returnValue += Result : true; else returnValue += Result : false; Response.Write(returnValue); break; default: break;改进但是如果我们可以通过反射,可以帮助我们动态执行需要被调用的函数,这样就解决了代码判断过长,难维护,不易读的问题。首先创建一个映射类,作用:给需要动态执行的AJAX函数打上标签。 代码AttributeUsage(AttributeTargets.Method, Inherited = false, AllowMultiple = false) public class AttributeAjax : System.Attribute private AjaxOperType operType; / / 函数对应的ajax操作类型 / public AjaxOperType OperType get return this.operType;setthis.operType = value; 然后在写一下获取标签名称的反射类 代码public class MappingAJAX private static Hashtable hashTable = new Hashtable(); private static Hashtable InitialHashtable(ExecAjax entity) if (hashTable != null & hashTable.Contains(entity.GetType().FullName) return hashTableentity.GetType().FullName as Hashtable; Hashtable entityHash = new Hashtable(); MethodInfo methodInfo = entity.GetType().GetMethods(); foreach (MethodInfo method in methodInfo) object obj = method.GetCustomAttributes(typeof(AttributeAjax), false); if (obj.Length 0) entityHash.Add(AttributeAjax)obj0).OperType, method.Name); hashTable.Add(entity.GetType().FullName, entityHash); return entityHash; public static string GetMethodName(ExecAjax entity, AjaxOperType property) Hashtable hashTable = InitialHashtable(entity); if (hashTable.Contains(property) return (string)hashTableproperty; return null;前期工作都准备好了。剩下的就是写具体在AJAX当中需要执行的函数了。 代码public class ExecAjax : System.Web.UI.Page AttributeAjax(OperType = AjaxOperType.ExistsUserName) public string ExistsUserName(NameValueCollection ajaxValue) string returnValue = ; if (ajaxValueValue != null & ajaxValueValue.ToString() = 貂蝉) returnValue += Result : true; else returnValue += Result : false; return returnValue; AttributeAjax(OperType = AjaxOperType.GetUserName) public string GetUserName(NameValueCollection ajaxValue) string returnValue = Result : 关羽;return returnValue;最后在具体页面调用的时候就可以写成这样: 代码public partial class Common_AJAXCommon : System.Web.UI.Page protected void Page_Load(object sender, EventArgs e) if (Request.ParamsMode = null) / 错误处理return; int ajaxOperType = Convert.ToInt32(Request.ParamsMode.ToString(); this.OperAjax(ajaxOperType); / / 反射处理方式。 / / 执行类型 private void OperAjax(int ajaxOperType) ExecAjax exec = new ExecAjax(); string methodName = MappingAJAX.GetMethodName(exec, (AjaxOperType)ajaxOperType); object objList = Request.Params
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025新型建材购销合同
- 松香蒸馏工职业技能考核试卷及答案
- 2025济南事业单位医疗c类试题及答案
- 上海车辆安全员考试题库及答案解析
- 风机操作工上岗考核试卷及答案
- 棉花加工辅助工基础考核试卷及答案
- 2025能源开发招标合同
- 印染烘干操作工内部技能考核试卷及答案
- 医疗救护员理论知识考核试卷及答案
- 医院安全管理知识题库及答案解析
- 电气班组安全教育培训课件
- 《2025同上一堂思政课》观后感10篇
- SY4201.2-2019石油天然气建设工程施工质量验收规范设备安装塔类检验批表格
- 电机的工作原理课件
- 设计质量意识培训课件
- 2025年四川省高考化学试卷真题(含答案解析)
- 2025年新玩家股东招募协议书
- 食品安全知识培训会议记录范文
- 2025年剧情短片离婚协议书
- 心理健康汇报表总结
- 药房采购员与验收员培训
评论
0/150
提交评论