标签存档: jquery

javascript实用模板引擎

John Resig 开发的一个简易模板引擎,配合json非常的实用。

// Simple JavaScript Templating
// John Resig - http://ejohn.org/ - MIT Licensed
(function(){
  var cache = {};
 
  this.tmpl = function tmpl(str, data){
    // Figure out if we're getting a template, or if we need to
    // load the template - and be sure to cache the result.
    var fn = !/\W/.test(str) ?
      cache[str] = cache[str] ||
        tmpl(document.getElementById(str).innerHTML) :
     
      // Generate a reusable function that will serve as a template
      // generator (and which will be cached).
      new Function("obj",
        "var p=[],print=function(){p.push.apply(p,arguments);};" +
       
        // Introduce the data as local variables using with(){}
        "with(obj){p.push('" +
       
        // Convert the template into pure JavaScript
        str
          .replace(/[\r\t\n]/g, " ")
          .split("<%").join("\t")
          .replace(/((^|%>)[^\t]*)'/g, "$1\r")
          .replace(/\t=(.*?)%>/g, "',$1,'")
          .split("\t").join("');")
          .split("%>").join("p.push('")
          .split("\r").join("\\'")
      + "');}return p.join('');");
   
    // Provide some basic currying to the user
    return data ? fn( data ) : fn;
  };
})();

很少的一点代码。但功能非常实用。

准备json和一个模板即可

jquery simple template demo

错误归纳:jquery formValidator

1、在和struts2框架做ajax验证时候,采用ajaxValidator方法!

url : “valEmail.action”, data:”email=”+$(“#email”).val();

这种形式传递不能把值传递到Service~~

解决方法:直接默认传递,即url : “valEmail.action”, 不构建任何字符串~由formValidator插件完成参数传递!然后在action里面通过String str = request.getParameter(“email”);得到传递的参数。

2、ajaxValidator乱码问题

由于前面一个问题导致不能加入参数,因此在传入中文后会有乱码出现!在action里面~~通过各种方式转换都不成功!

解决方法:打开formValidator.js文件,找到395行的

var parm = "clientid="+id+"&"+id+"="+encodeURIComponent(encodeURIComponent(srcjo.val()));

修改为

var parm = "clientid="+id+"&"+id+"="+escape(srcjo.val());
然后在服务端获取参数的时候String str = URLDecoder.decode(request.getParameter(“name”),”utf8″);转换即可

以上都是在源码和界面都采用utf8情况下!肯定有更好的解决方法!希望大家帮忙,集思广益!