读书人

jQuery获取servlet回来的JSON

发布时间: 2013-03-10 09:38:39 作者: rapoo

jQuery获取servlet返回的JSON

servlet如下:

?

[java]?view plaincopy
  1. package?forum.servlet;??
  2. ??
  3. import?java.io.IOException;??
  4. import?java.io.PrintWriter;??
  5. import?java.util.ArrayList;??
  6. import?java.util.Map;??
  7. ??
  8. import?javax.servlet.ServletException;??
  9. import?javax.servlet.http.HttpServlet;??
  10. import?javax.servlet.http.HttpServletRequest;??
  11. import?javax.servlet.http.HttpServletResponse;??
  12. ??
  13. import?forum.huhai.beanService.MenuService;??
  14. import?forum.huhai.beanService.impl.MenuServiceImpl;??
  15. ??
  16. public?class?GetMenus?extends?HttpServlet?{??
  17. ??
  18. ????/**?
  19. ?????*??
  20. ?????*/??
  21. ????private?static?final?long?serialVersionUID?=?9142776995911654738L;??
  22. ??
  23. ????@Override??
  24. ????protected?void?service(HttpServletRequest?request,?HttpServletResponse?response)??
  25. ????????????throws?ServletException,?IOException?{??
  26. ??????????
  27. ????????class?MenuForAjax{??
  28. ????????????String?id;??
  29. ????????????String?menuName;??
  30. ????????????public?MenuForAjax(String?id,String?menuName)???
  31. ????????????{??
  32. ????????????????this.id=id;??
  33. ????????????????this.menuName=menuName;??
  34. ????????????}?????????????
  35. ??????????????
  36. ????????????public?String?toString()??
  37. ????????????{??
  38. ????????????????return?"{'id':'"+id+"','menuName':'"+menuName+"'}";??
  39. ????????????}??
  40. ????????}??
  41. ????????class?MenuList?extends?ArrayList<MenuForAjax>{??
  42. ????????????????/**?
  43. ?????????????*??
  44. ?????????????*/??
  45. ????????????private?static?final?long?serialVersionUID?=?8591018782693731102L;??
  46. ??
  47. ????????????????@Override??
  48. ????????????????public?String?toString()??
  49. ????????????????{??
  50. ????????????????????String?str="[";??
  51. ????????????????????for(MenuForAjax?m:this)??
  52. ????????????????????{??
  53. ????????????????????????str+=m+",";??
  54. ????????????????????}??
  55. ????????????????????return?str.substring(0,str.length()-1)+"]";??
  56. ????????????????}??
  57. ????????????}??
  58. ????????MenuService?menuService=new?MenuServiceImpl();??
  59. ????????Map<String,String>?menus=?menuService.getMenus();??
  60. ????????MenuList?menuList=new?MenuList();??
  61. ????????for(String?key:menus.keySet())??
  62. ????????{??
  63. ????????????menuList.add(new?MenuForAjax(key,menus.get(key)));????????????
  64. ????????}?????????
  65. ????????response.setContentType("application/x-json");??
  66. ????????PrintWriter?out=?response.getWriter();????????
  67. ????????out.print(menuList.toString());??
  68. ????????out.close();??
  69. ????}??
  70. }??

?

javascript如下:

?

[javascript]?view plaincopy
  1. $(document).ready(??
  2. ????????????function()??
  3. ????????????{??
  4. ????????????????//重置按钮清空FCKeditor中的内容??
  5. ????????????????$('#button_resetTopic').click(??
  6. ????????????????????function()??
  7. ????????????????????{??
  8. ????????????????????????var?editor=FCKeditorAPI.GetInstance('content')?;??????????????????????????
  9. ????????????????????????editor.SetData('');???????????????????????????????????????????
  10. ????????????????????}??
  11. ????????????????);??
  12. ????????????????//绑定版块选择框??
  13. ????????????????var?getSections=function(mid)??
  14. ????????????????{??
  15. ????????????????????$.post(??
  16. ????????????????????????'servlet/getSections',??
  17. ????????????????????????{'menuID':mid},??
  18. ????????????????????????function(data)??
  19. ????????????????????????{??
  20. ????????????????????????????var?sectionSelect=$('#select_selectSection');??
  21. ????????????????????????????sectionSelect.clearAll();?????????????????????????????????????????????????????
  22. ????????????????????????????var?sections=eval(data);??????????????????????????????
  23. ????????????????????????????$.each(sections,??
  24. ????????????????????????????????function(i)??
  25. ????????????????????????????????{?????????????????????????????????????????????????????????????????
  26. ????????????????????????????????????sectionSelect.addOption(sections[i].sectionName,sections[i].id);??????????????????????????????????????????????????????????????????
  27. ????????????????????????????????}??
  28. ????????????????????????????);????
  29. ????????????????????????},??
  30. ????????????????????????'json'??
  31. ????????????????????);??
  32. ????????????????};??
  33. ????????????????$.post(??
  34. ????????????????????'servlet/getMenus',??
  35. ????????????????????function(data)??
  36. ????????????????????{??
  37. ????????????????????????var?menuSelect=$('#select_selectMenu');??
  38. ????????????????????????var?menus=eval(data);??
  39. ????????????????????????$.each(menus,??
  40. ????????????????????????????function(i)??
  41. ????????????????????????????{?????????????????????????????????????????????????????????????????
  42. ????????????????????????????????menuSelect.addOption(menus[i].menuName,menus[i].id);??????????????????????????????????
  43. ????????????????????????????}??
  44. ????????????????????????);????????
  45. ????????????????????????var?menuID=menuSelect.getSelectedValue();??
  46. ????????????????????????getSections(menuID);??
  47. ????????????????????????menuSelect.change(??
  48. ????????????????????????????function()??
  49. ????????????????????????????{?????????????????????????????
  50. ????????????????????????????????menuID=menuSelect.getSelectedValue();?????????????????????????????????
  51. ????????????????????????????????getSections(menuID);??
  52. ????????????????????????????}??
  53. ????????????????????????);????????????????????????????????????
  54. ????????????????????},??
  55. ????????????????????'json'????????
  56. ????????????????);??
  57. ????????????}??
  58. ????????);??

?

注意:“response.setContentType("application/x-json");”,网上有的文章用的是“response.setContentType("text/xml;charset=utf-8");”,但我用“response.setContentType("text/xml;charset=utf-8");”时获得的是包含javascript的整个页面,而不是json数据,而用“response.setContentType("application/x-json");”获取到的就是JSON数据了。

文章来源:http://blog.csdn.net/huhai463127310/article/details/4901654

读书人网 >JavaScript

热点推荐