继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

jquery下的json格式ajax实现

安卓入门学习视频
关注TA
已关注
手记 267
粉丝 68
获赞 387

前言

    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>

 

 

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP