实践总结ajax各种使用方式(中)

来源:互联网 发布:拥有的域名可以干什么 编辑:程序博客网 时间:2024/04/30 09:20
导读:
  JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写,比xml有更好的易用性json中文网站
  JSON具有以下这些形式:
  对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。
  数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。
  值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array)。这些结构可以嵌套。
  
  
  字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。
  字符串(string)与C或者Java的字符串非常相似。
  
  
  数值(number)也与C或者Java的数值非常相似。除去未曾使用的八进制与十六进制格式。除去一些编码细节。
  
  
  以下是以自己在项目中实际使用到JSON为原型进行举例
  1、业务描述:
  根据前台搜索信息进行搜索,并把后台查询出来的数据集合封装成JSON的方式展现在前台
  前台页面搜索:
  1

  2

  3


  4 预约挂号反馈资源管理 5


  6


  7
  11
  15
  19
  23
  24


  25

  26

  27

  28

  
  js脚本,在这里用到Prototype开源组件,意在规避ajax底层操作prototype官方网站
  1function aa(){ 2 3 var url = '${ctx}/registerresult.do?method=listFor1'; 4 var name22=$F("name2"); 5 var myAjax = new Ajax.Request( 6 url, 7 { 8 method: 'post', 9 parameters:Form.serialize('form1'),10 11 evalScripts: true,12 13 onComplete:reportError14 });15}
  16 function reportError(originalRequest){17 var myobj = originalRequest.responseText.evalJSON(true);18 var tdate = new Date;19 var tmonth =tdate.getMonth()+1
  20 var tday=tdate.getDate();21 if(tmonth<10)22 tmonth="0"+tmonth;23 if(tday<10)24 tday="0"+tday;25 var ymdate = tdate.getYear()+""+tmonth+""+tday;26 var str="  27 str=str+"确认号反馈结果申请单号申请日期病人编号病人姓名科室名"
  28 myobj.each(function(myobj1){2930 if(ymdate==myobj1[4]){31 str=str+""
  32 str = str+""
  33 str = str+""+myobj1[1]+""
  34 str = str+""+myobj1[2]+""
  35 str = str+""+myobj1[3]+""
  36 str = str+""+myobj1[4]+""
  37 str = str+""+myobj1[5]+""
  38 str = str+""+myobj1[6]+""
  39 str = str+""+myobj1[7]+""
  40 str=str+""
  4142 }else{43 str=str+""
  44 str = str+""
  45 str = str+""+myobj1[1]+""
  46 str = str+""+myobj1[2]+""
  47 str = str+""+myobj1[3]+""
  48 str = str+""+myobj1[4]+""
  49 str = str+""+myobj1[5]+""
  50 str = str+""+myobj1[6]+""
  51 str = str+""+myobj1[7]+""
  52 str=str+""
  53 }
  54 });55 str=str+""
  56 $("pp").innerHTML=str;5758 }
  此脚本中aa()是获得前台form1表单中查询数据并调用后台方法;reportError()方法是获得封装后的JSONArray进行遍历并进在
  前台进行展示
  控制层代码如下:
  1/**
  2 * 此为ajax测试,把查询结果list使用JSON方式返回 3 * 4 * @param
  5 * 6 */
  7 public void listFor1(ActionMapping mapping, ActionForm form, 8 HttpServletRequest request, HttpServletResponse response) 9 throws Exception {10 String operate_date1 = request.getParameter("operate_date1");1112 String operate_date2 = request.getParameter("operate_date2");13 String name1 = request.getParameter("name1");14 String name2 = request.getParameter("name2");15 log.info("开放日期:" + operate_date1);16 List list = registerresultManager.queryApply(registerresultManager17 .registerResult(operate_date1, operate_date2, name1, name2),18 getListPage(request, Constant.COUNT));1920 21 JSONArray resultArray = new JSONArray();22 JSONObject jsonObject = new JSONObject();23 for (int i = 0 i < list.size(); i++) {24 Object[] d = (Object[]) list.get(i);25 jsonObject = registerresultManager.getJSON(d);26 resultArray.put(jsonObject);27 }
  2829 // 调用基类方法,转化成json方式
  30 renderJson(response, resultArray.toString());31 }
  32
  此代码是根据查询条件查询出符合条件数据集合,并把集合转化成JSONObject,并把此对象放入JSONArray
  转化成JSONObject方法如下:
  1/**
  2 * 转换成JSON格式 3 * @param domain 4 * 是要进行转化的实体对象 5 * @return JSONObject 6 */
  7 public JSONObject getJSON(Object[] domain) { 8 JSONObject jsonObject = new JSONObject(); 9 for (int i = 0 i < domain.length; i++) {10 if(domain[i]==null)11 domain[i]=""
  12 jsonObject.put(String.valueOf(i), domain[i]);13 }
  1415 return jsonObject;16 }
  这样整个功能完成
  页面效果如下:
  总结:
  JSON比XML在ajax方面一些优势:
  1、易于解读,易于编写,与java中Map集合类似,更易于被开发人员接受
  2、节省解析过程,不用象xml需要用JDom等方式解析xml
  一篇不错饿参考文章 使用JSON进行数据传输
  评论
  # re: [原创]实践总结ajax各种使用方式(中) 2008-01-08 16:27 久城
  能否请教一下,你的后台处理中,从数据库中取出来的list转化成JSON对象,这中间用的是某个lib包?还是自己写的类用来封装和转换?
  我从List中取出数据,想传回一个JSON对象到JavaScript中,不知道现在用什么方法实现比较简单。 回复 更多评论
  
  # re: [原创]实践总结ajax各种使用方式(中) 2008-01-08 22:04 xidudui
  透彻! 回复 更多评论
  
  # re: [原创]实践总结ajax各种使用方式(中)[未登录] 2008-01-09 09:08 harry520
  关于 久城 的提出的问题我想解释一下
  1、我用json包是jsonrpc包
  2、不需要自己写类来进行封装和转换,如果你想回传一个对象给前台就用JSONObject,如果是传回一个数据集合就封装成JSONArray
  上篇文章中的getJSON方法就是转换成JSONArray对象
  /**
  2 * 转换成JSON格式
  3 * @param domain
  4 * 是要进行转化的实体对象
  5 * @return JSONObject
  6 */
  7 public JSONObject getJSON(Object[] domain) {
  8 JSONObject jsonObject = new JSONObject();
  9 for (int i = 0; i   10 if(domain[i]==null)
  11 domain[i]="";
  12 jsonObject.put(String.valueOf(i), domain[i]);
  13 }
  14
  15 return jsonObject;
  16 }
  3、如果你要回传一个list集合的话就用我上述这个方法就可以,你重点看一
  下控制层的listFor1方法和上述getJSON方法,然后根据你的要求把list穿入就可以了
  你看一下,如果有问题请给我回复! 回复 更多评论
  
  # re: [原创]实践总结ajax各种使用方式(中)[未登录]2008-01-10 09:07 久城
  @harry520
  十分感谢!~:)
  这几天一直想找这样一个包! 回复 更多评论
  
  刷新评论列表
  标题
  姓名
  主页
  验证码 *
  
  
  内容(请不要发表任何与政治相关的内容)
  
  Remember Me?
  登录 使用高级评论 新用户注册 恢复上次提交
  [使用Ctrl+Enter键可以直接提交]
  该文被作者在 2008-01-17 20:20 编辑过
  
  
  相关文章:
  由测试组件总结反射方法
  实践Quartz定时任务方式大全
  
  
  
  
  XFire使用详解
  hibernate annotation关联关系问题解决
  commons-collections开源组件的问题(关注)
  关于每日构建|每小时构建

本文转自
http://www.blogjava.net/wuxj888java/archive/2008/01/08/173566.html
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 儿子18岁谈朋友怎么办 和朋友为钱吵架怎么办 感情里总担心失去怎么办 眼石移出盲僧怎么办 打仗把小便踢肿了怎么办 腿上都是挠的疤怎么办 脚上的肉烂了怎么办 商铺门口有电杆怎么办 漏电保护器坏了怎么办 空开进线烧了怎么办 过压保护灯亮怎么办 美的热水器接地异常怎么办 欠压保护器坏了怎么办 三孔插座没地线怎么办 二胡琴筒裂缝宽怎么办 有了月亮从四星宠满级的怎么办 党委下属没有党支部了党委怎么办 发生日期大于制单日期怎么办 美的空调出现p0怎么办 薯片受潮不脆了怎么办 泡过的莲子煮不烂怎么办 绿豆有煮不熟的怎么办 吃了羊肉吃西瓜怎么办 吃了狗肉和绿豆怎么办 做的衣柜没有门怎么办 蒸馒头熟了会瘪怎么办 3dmax贴图太大了怎么办 嘴皮边缘颜色深怎么办 嘴巴周围肤色暗沉怎么办 中奖彩票被洗了怎么办 牙龈下面长米粒肉疙瘩怎么办 书画印章盖反了怎么办 金龙鱼一个月不吃东西怎么办 罗汉鱼头撞扁了怎么办 房顶开槽埋线白色不一样怎么办 顶上灯挪位置线怎么办 马蜂窝弄掉又来怎么办 蜂窝弄掉又有怎么办 2018年小龙虾底板脏怎么办 一本分数线擦边过怎么办 玩具塑料球扁了怎么办