阅读文章

轻量级的Ajax解决方案——DynAjax的JQuery版

[日期:2008-03-18] 来源:  作者: [字体: ]

    
  下班了,刚到家,老婆在做饭,小家伙在玩玩具,暂时没骚扰我。呵呵!趁这空闲写会博客。前两天答应改造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!
  
    


阅读:
录入:blue1000

评论 】 【 推荐 】 【 打印
上一篇:ASP.NET MVC URL Routing 学习 定义URL Routing
下一篇:C#3.0中的“多重继承”
相关文章      
本文评论
发表评论


点评: 字数
姓名:

  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款