就个人理解JavaScript 既不是完全面向对象的,也不是完全的面向过程的,参半吧。
单纯的用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,真是无知者无谓啊,不知现在他们和公司发现这些问题没...
完。
分享到:
相关推荐
【JavaScript源代码】基于Visual Studio Code + React的开发环境搭建 在进行JavaScript开发,特别是React应用的构建时,一个高效且便捷的开发环境是至关重要的。本教程将详细介绍如何在Windows操作系统上,利用...
JavaScript源代码的美观性和一致性对于团队协作至关重要,尤其是在大型企业中。Prettier是一个流行的代码格式化工具,它能够自动将代码格式化为统一的风格,从而减轻开发者手动调整代码格式的工作负担。本教程将详细...
文献资料Python( .py )前缀为oo 字首目的显现添加清单json 进口添加导入导入从中添加导入模型新增模型fchar 添加字符字段文字新增文字栏位的fhtml 添加html字段布尔值添加布尔字段芬特格添加整数字段飘浮添
为了解决这些问题,本文将详细介绍如何使用Visual Studio Code (简称Vscode) 搭建一个完整的React-Native开发环境,并推荐使用Vscode结合Typings和ESLint作为解决方案。 #### 二、解决方案:Vscode + Typings + ...
在使用Visual Studio Code (VSCode) 开发UniApp项目时,有一些关键的步骤和配置能够提升开发效率。首先,UniApp是一个基于Vue.js的多端开发框架,它允许开发者编写一次代码,部署到多个平台,如H5、微信小程序、...
return Json(new { code = "1", msg = "", item = item, columns = columns }); } else { School item = new School { no = "S001", name = "浙江大学", address = "浙江", }; List<Column> columns = ...
接着,在`serializers.py`中,我们创建了一个序列化器`CountDownModelSerializer`,它继承自`ModelSerializer`,用于处理模型实例到JSON数据的转换以及反向转换。这样,前端可以方便地接收和发送数据。 ```python ...
BNY-梅隆-代码-挑战MVC: AngularJS, HTML5, CSS, Framework:Bootstrap, OOJS, 单元测试:Karma(不包括这个特性) UI 示例应用程序 我们正在寻找一个以小型 CRUD 应用程序形式出现的 HTML / CSS / JS 技能的简单证明。...
'onUploadError': function (file, errorCode, errorMsg, errorString) { alert('文件' + file.name + '上传失败:' + errorString); } }); }); ``` 5. 服务器端处理 在ASP.NET MVC中,你需要创建一个控制器...
此命令会将KindEditor添加到项目的`node_modules`目录下,并自动将其版本记录在`package.json`文件中。 #### 三、创建组件 接下来,我们需要创建一个名为`kindeditor.vue`的Vue组件来封装KindEditor的功能。以下是...
Highcharts可以接收多种数据源,包括JSON、数组或CSV格式。数据可以直接内联在配置对象中,也可以从服务器动态加载。图表具有交互性,用户可以通过点击、悬停等行为触发事件,开发者可以通过监听这些事件来进行...
- 深拷贝与浅拷贝的区别,实现方式如JSON.parse(JSON.stringify())等。 - 理解事件循环(Event Loop)和异步处理机制。 - 对象和数组的遍历方法,如for...in, for...of, map, forEach等。 - 高阶函数的运用,如...