|
| 首页 → 程序开发 → .NET教程 |
| 阅读文章 |
轻量级的Ajax解决方案——DynAjax的JQuery版
下班了,刚到家,老婆在做饭,小家伙在玩玩具,暂时没骚扰我。呵呵!趁这空闲写会博客。前两天答应改造DynAjax为JQuery版本,今天就完成这个任务吧。 上一篇随笔介绍了轻量级的Ajax解决方案DynAjax,可惜原作者只有写支持Prototype.js版本的。 DynAjax用到Prototype.js特殊用法的地方不多,就dynAjax.ASPx和dynAjax.ASPx.cs。 特殊用法分别是(红色部分标出): var DynAjaxManager = Class.create();dynAjax.ASPx第14行 new Ajax.Request(....)dynAjax.ASPx第25行至41行 parameters: .... encodeURIComponent(Object.toJSON(args)),dynAjax.ASPx第28行 dynaResult = request.responseText.evalJSON();dynAjax.ASPx第30行 以上是dynAjax.ASPx的,下面的是dynAjax.ASPx.cs的: dynamicJsText += "var " + className + "Class = Class.create();\n";dynAjax.ASPx.cs第64行 分别说说红色部分的用法: Class.create() 新建一个类,JQuery中我没找到替代功能,用function 类名(){}代替。 new Ajax.Request() 相当于JQuery的$.ajax(); Object.toJSON(xxx) 把xxx转换为JSON字符串;JQuery中也没找到替代函数,用http://www.json.org/js.HTML 的json2.js的 JSON.stringify(xxx)代替; responseText 返回数据的文本形式;发现JQuery中这个没必要,去掉无妨。 evalJSON() 将JSON字符串转换为JSON对象;JQuery没有可替代对象,同样借助json2.js 的JSON.parse(xxx);不过我还是推荐用JavaScript内建的eval(‘(‘+xxx+’)’);因为JSON.parse目前版本不完善,会碰到转不了的情况,以后再分析吧 按以上方法改版后,文件变动如下: prototype.js 删 jquery.js增 json2.js增 改版后dynAjax.ASPx代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="dynAjax.aspx.cs" Inherits="_dynAjax" %> /********************************************************************** * DYNAJAX Project - code by Benoit BEGUIN * first release: october 2007 * last update: february 2008 * Paris, France * * DynAjax web site: http://www.dynajax.org/ * Any question: mailto:admin@dynajax.org * Company support: http://www.odesys.fr **********************************************************************/ /* ------- GENERIC CONTENT ------- */ function DynAjaxManager(){} DynAjaxManager.prototype = { initialize: function() {}, getDynaData: function(classId, methodName, args, callBackMethod) { var dynaResult = null; var asyncCall = false; if (callBackMethod && typeof callBackMethod == "function") { asyncCall = true; } $.ajax({ type:"POST", url:"AjaxDataHandlers/DynAjaxHandler.ASPx", data:"classId=" + encodeURIComponent(classId) + "&methodName=" + encodeURIComponent(methodName) + "&methodArgs=" + encodeURIComponent(JSON.stringify(args)), async:asyncCall, success:function(request){ dynaResult = eval('('+request+')');//JSON.parse(request); if (callBackMethod) { callBackMethod(dynaResult); } }, error:function(e) { dynaResult = null; if (callBackMethod) { callBackMethod(dynaResult); } } }); return dynaResult; } }; var dynAjaxManager = new DynAjaxManager(); /* ------- END OF GENERIC CONTENT ------- */ /* ------- DYNAMIC CONTENT ------- */ <%= dynamicJsText %> /* ------- END OF DYNAMIC CONTENT ------- */ dynAjax.ASPx.cs 第64行改为如下代码: dynamicJsText += "function " + className + "Class(){}\n"; 别忘了在你的ajax特效网页更新js引用(jquery.js和json2.js)。 最后,我做了个演示用的压缩包,下载dynAjax_v1.04_jquery_by_kai.ma.rar http://www.cnblogs.com/Files/kaima/dynAjax_v1.04_jquery_by_kai.ma.rar Enjoy it!
|
| 相关文章 |
| 发表评论 |
BK网络学院主要内容:平面设计教程,网站开发在线教程,网页制作教程,服务器教程,网络编程,数据库教程等。产业部:沪ICP备05019380号 陇ICP备05004709号 公安局:GR6201030003 Copyright © BK设计 Powered by BK网络学院 |