就个人理解JavaScript 既不是完全面向对象的,也不是完全的面向过程的,参半吧。
单纯的用JavaScript 写一个类估计都能会,伪装个java util类也没啥问题。
这个文章说的切入点是这样的:
JavaScript --> ajax --> some service --> 返回 到JavaScript 。
常见的返回数据的方式有:
1)返回数据由ajax框架来伪装成 JavaScript 类 ;
2)返回lang类型的 数据,直接编程JavaScript的弱类型数据来使用。
没有反对上面两种方式的意思,现在给出我自己的方式:
例:现在要返回这样一个结构的数据:
要返回这个VO 的instance 的数据给 JavaScript ,我的做法比较折中,既不转换成伪类,也不返回简单的lang类型 ,
返回的一个字符串,格式如下:
{strs:[null,['sdf',null],['sdf','ggds'],['wer','saw']],name:'name',age:'12',sysLoginID:'',password:'sdf'}
(怎么转?,有写好的code ,Helper.toJSONString(Object obj) ,详见:Helper(http://chrnc.iteye.com/admin/blogs/269322)
现在看看 JavaScript 这边怎么来处理 :
testValue是传给 TestService 的 参数, TestService 是java 用伪装的 JavaScript类 。
现在将TestService 返回的 数据 ({strs:[null,['sdf',null],['sdf','ggds'],['wer','saw']],name:'name',age:'12',sysLoginID:'',password:'sdf'})
赋值给 curData
代码如下:
JSONObj是 转换出来的 JavaScript 原声类型
JSONObj.name 你会得到 "nameStr"
JSONObj.sysLoginID 你会得到 null
JSONObj.strs[1][0] 你会得到 "sdf"
我见过一些兄弟,挺猛,就能把上面的VO连接成字符串后到前台的JavaScript中来拆分,取数据,但是,如果没了注释的话,以后谁能维护?看懂的成问题。
谨以此文送给我那还在拆分字符串的朋友们。
当然,在开发中我们不会去调用DWREngine去设置同步和异步的,转换JSON等动作也会放到 callback function 中去做,上面的写法只是理想状态的写法,只为转换JSON的逻辑看着更清晰连贯,现实中,如果后台动作很耗时的话,这么做了你会发现,你的在页面上,键盘和鼠标都不响应了,浏览器处于冻结状态.....我年轻时在开发时候这么写过,还教别人也这么用DWREngine,真是无知者无谓啊,不知现在他们和公司发现这些问题没...
完。
单纯的用JavaScript 写一个类估计都能会,伪装个java util类也没啥问题。
这个文章说的切入点是这样的:
JavaScript --> ajax --> some service --> 返回 到JavaScript 。
常见的返回数据的方式有:
1)返回数据由ajax框架来伪装成 JavaScript 类 ;
2)返回lang类型的 数据,直接编程JavaScript的弱类型数据来使用。
没有反对上面两种方式的意思,现在给出我自己的方式:
例:现在要返回这样一个结构的数据:
final class VO {
String strs[][] = {null,{"sdf",null},{"sdf","ggds"},{"wer","saw"}};
String name = "nameStr";
int age = 12;
String sysLoginID;
String password = "sdf";
}
要返回这个VO 的instance 的数据给 JavaScript ,我的做法比较折中,既不转换成伪类,也不返回简单的lang类型 ,
返回的一个字符串,格式如下:
{strs:[null,['sdf',null],['sdf','ggds'],['wer','saw']],name:'name',age:'12',sysLoginID:'',password:'sdf'}
(怎么转?,有写好的code ,Helper.toJSONString(Object obj) ,详见:Helper(http://chrnc.iteye.com/admin/blogs/269322)
现在看看 JavaScript 这边怎么来处理 :
testValue是传给 TestService 的 参数, TestService 是java 用伪装的 JavaScript类 。
现在将TestService 返回的 数据 ({strs:[null,['sdf',null],['sdf','ggds'],['wer','saw']],name:'name',age:'12',sysLoginID:'',password:'sdf'})
赋值给 curData
代码如下:
var curData = "";
DWREngine.setAsync(false);
var callbackProxy = function(serverRetValue) {new function(){curData=serverRetValue;}};
var callMeta = { callback:callbackProxy };
TestService.getTestJSONStr(testValue,callMeta);
DWREngine.setAsync(true);
var JSONObj = eval("("+curData+")"); //弄了变天就为了这句
JSONObj是 转换出来的 JavaScript 原声类型
JSONObj.name 你会得到 "nameStr"
JSONObj.sysLoginID 你会得到 null
JSONObj.strs[1][0] 你会得到 "sdf"
我见过一些兄弟,挺猛,就能把上面的VO连接成字符串后到前台的JavaScript中来拆分,取数据,但是,如果没了注释的话,以后谁能维护?看懂的成问题。
谨以此文送给我那还在拆分字符串的朋友们。
当然,在开发中我们不会去调用DWREngine去设置同步和异步的,转换JSON等动作也会放到 callback function 中去做,上面的写法只是理想状态的写法,只为转换JSON的逻辑看着更清晰连贯,现实中,如果后台动作很耗时的话,这么做了你会发现,你的在页面上,键盘和鼠标都不响应了,浏览器处于冻结状态.....我年轻时在开发时候这么写过,还教别人也这么用DWREngine,真是无知者无谓啊,不知现在他们和公司发现这些问题没...
完。