您的位置:首页 > 其它

高级文件系统实现者指南,第 7 部分

2007-09-14 14:08 561 查看

前言

ajax大大地方便了前台页面的显示,提升了用户体验,提高了资源的利用率。而jquery支持的ajax方法又为ajax的实现提供了封装,免去了繁琐的浏览器兼容判断与response返回数据状态判断。

jquery的ajax支持String、XML和JSON机种格式,而随着现在类库的不断完善,现在可以很方便的直接将对象直接转换成JSON的数据格式,返回给前台。而前台JS也可以将JSON数据很方便地再转换成对象。

相对于XML,JSON这种数据格式可能直接看上去没有XML那么清晰,但是其更利于对其的解析,直接eval即可获取其对象,利于编程。

一、实例

实例才是王道,需求如下:

输入整机条码信息,后台查询相关数据(工单号码、机种、工单数量)并将其自动显示到页面





采用jquery触发整机条码的change事件,触发时走如下ajax方法

$.ajax({
//采用post方式传递数据
type: "POST",
//struts的action请求
url: "repairinfo!queryorder",
//传递到后台的数据
data:   "machinecode="+$("#machinecode").val(),
//采用json的方式返回数据
dataType:"json",
//后台返回数据后的方法,返回数据为result
success: function(result){
//通过eval方法后台组织的json数据可以直接转化为对象
var ary = eval(result);

//获取数据时直接在引号内填写字段名称即可
$("#machinecode").val(ary['machinecode']);
$("#orderid").val(ary['orderid']);
$("#machine").val(ary['machine']);
$("#num").val(ary['num']);

if(ary['machinecode'] == null || ary['machinecode'] == ""){
$("#isflowid").html("此整机条码不存在!");
}else{
$("#isflowid").empty();
}
}
});

后台获取数据转换为json形式返回前台

public void queryorder() throws Exception{
/** 此处省略如何获取实体repairinforshow */

//将实体转化为json形式
JSONObject json = JSONObject.fromObject(repairinforshow);
System.out.println("开始组织repairin"+json.toString());

//运用response返回数据
HttpServletResponse response2 = ServletActionContext.getResponse();
response2.setCharacterEncoding("UTF-8");
response2.setContentType("text/html;charset=utf-8");
response2.setHeader("Cache-Control", "no-cache");
response2.getWriter().write(json.toString());
}

下面是后台控制台打印出来的json.toString()

开始组织repairin{"count":"","description":"","errorcode":"","flag":"","id":0,"isreplacekey":"","machine":"I5","machinecode":"L36832-1C37066630","mainboardcode":"","mainboardreason":"","mainboardrepair":"","mainboardrepairman":"","mainboardresult":"","mainboardresultremark":"","num":"123","orderid":"12","reason":"","repair":"","repairman":"","repairtime":null,"result":"","resultremark":"","station":"","testman":"","uploadtime":null}


二、几个注意点

1、在后台代码中转化为JSON的方法

如果是要传递collection,需要采用JSONArray来转化

JSONArray json = JSONArray.fromObject(testsets);

转化为json的ArrayList

开始组织testsets[{"id":1,"machineid":"6","remark":"前测","testtype":"前测"},{"id":2,"machineid":"6","remark":"老化","testtype":"老化"},{"id":3,"machineid":"6","remark":"后测","testtype":"后测"}]

2、后台转换JSON数据用到的jar包

xom-1.1.jar json-lib-2.4.jar

ezmorph-1.0.6.jar commons-logging-1.1.1.jar

commons-lang-2.5.jar commons-collections-3.2.1.jar

commons-beanutils-1.8.0.jar

如果是采用maven管理,只要早pom.xml中添加如下代码即可

<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
</dependency>


本文出自 “雪飘七月” 博客,请务必保留此出处http://xuepiaoqiyue.blog.51cto.com/4391594/922391
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: