實踐總結ajax各種使用方式(中)

導讀:
  JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式,易於人閱讀和編寫,比xml有更好的易用性json中文網站
  JSON具有以下這些形式:
  對象是一個無序的“‘名稱/值’對”集合。一個對象以“{”(左括號)開始,“}”(右括號)結束。每個“名稱”後跟一個“:”(冒號);“‘名稱/值’ 對”之間使用“,”(逗號)分隔。
  數組是值(value)的有序集合。一個數組以“[”(左中括號)開始,“]”(右中括號)結束。值之間使用“,”(逗號)分隔。
  值(value)可以是雙引號括起來的字符串(string)、數值(number)、true、false、 null、對象(object)或者數組(array)。這些結構可以嵌套。
  value.gif
  
  字符串(string)是由雙引號包圍的任意數量Unicode字符的集合,使用反斜線轉義。一個字符(character)即一個單獨的字符串(character string)。
  字符串(string)與C或者Java的字符串非常相似。
  string.gif
  
  數值(number)也與C或者Java的數值非常相似。除去未曾使用的八進制與十六進制格式。除去一些編碼細節。
  number.gif
  
  以下是以自己在項目中實際使用到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="
確認號反饋結果申請單號申請日期病人編號病人姓名科室名
"+myobj1[1]+""+myobj1[2]+""+myobj1[3]+""+myobj1[4]+""+myobj1[5]+""+myobj1[6]+""+myobj1[7]+"
"+myobj1[1]+""+myobj1[2]+""+myobj1[3]+""+myobj1[4]+""+myobj1[5]+""+myobj1[6]+""+myobj1[7]+"
"
  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
  十分感謝!~:)
  這幾天一直想找這樣一個包! 回覆 更多評論
  
  刷新評論列表
  標題
  姓名
  主頁
  驗證碼 *
  JpegImage.aspx?cacheid=20080122140102
  
  內容(請不要發表任何與政治相關的內容)
  
  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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章