在Showcase的Ajax示例中演示了jquery的ajax标准功能和基于JSONP的跨域访问。
JQuery的最基本功能包括是选择DOM对象,设置其内容、属性、CSS及一些常用操作,如:
$("#loginName").val("calvin");其中#loginName 是CSS语法,获得页面id为loginName的元素。一般按ID获取对象已足够,想使用更高级的CSS+XPath的获取方法,参考JQuery的Selector文档。
注意JQuery1.3后,按属性查询对象的语法已取消@,下面语句为name为"gender"的radio,checked值为"male"的box。
$('input:radio[name=gender]').val(['male']);在showcase使用了ajax的几种常用法,包括:
将Form中的内容序列化成字符串动态提交。 动态获取文本内容,更新本页内容。 动态获取JSON内容,更新本页内容。 基于JSONP,跨域获取html内容,更新本页内容。注意要避免缓存,要不服务端返回时输出no-cache参数,要不使用JQuery中最麻烦的用法$.ajax()方法来设定非缓存参数,详见JQuery官方文档。
因为Ajax时,会在URL中传输中文字符,需要设置URI-Encoding="UTF-8"(如Tomcat在server.xml中设置),否则会出现乱码。
跨域访问的细节可见IBM DW的文章《Cross-domain communications with JSONP》
Validation 是著名的客户端输入校验plugin,可进行非空、数字等常规校验,也可以远程ajax判断用户名是否唯一,详见 JQuery Plugin资料。
min-web中用它代替了Struts2的validate框架,详见的user-input.jsp(正式风格)、login.jsp(轻量风格)。
在showcase的Ajax示例中演示了DOJO Base的面向对象和Package管理。
Dojo Base的基本功能没什么出彩的地方,不过不失,但它的面向对象继承与JavaScript Package管理就做得很不错,如果项目需要写大量的Javascript,可采用Dojo Base来加强管理。
下面这段容易理解的面向对象父类子类定义,在JavaScript世界是很难得的。
//父对象, 拥有_color属性与getColor()函数 dojo.declare("Shape", null, { _color : "", constructor : function(color) { this._color = color; }, getColor : function() { return this._color; } }); //子对象, 拥有半径属性与计算范围的函数, 同时继承父对象属性与函数. dojo.declare("Circle", Shape, { _radius : 0, constructor : function(color, radius) { this._radius = radius; }, getArea : function() { return Math.PI * this._radius * this._radius; }, generateContent : function() { return "Shape is a circle with " + this.getColor() + " color," + this.getArea() + " area."; } });在dojo js文件的父目录,放入需要管理的目录与原文件,如dojo.js路径为js/dojo/dojo.js, 放入新的js/showcase/shape.js,并在shape.js中声明dojo.provide("showcase.shape");
则可在任意地方以以下语句载入该文件。
dojo.require("showcase.shape");