jQuery获取servlet返回的JSON

本文介绍了一个使用Servlet来处理HTTP请求并返回JSON格式数据的示例。通过Java Servlet实现了从数据库获取菜单信息,并将其转换为JSON格式发送给客户端。同时,前端使用jQuery的$.post方法来接收这些JSON数据并进行处理。

servlet如下:

 

[java]  view plain copy
  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 plain copy
  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.youkuaiyun.com/huhai463127310/article/details/4901654

乐播投屏是一款简单好用、功能强大的专业投屏软件,支持手机投屏电视、手机投电脑、电脑投电视等多种投屏方式。 多端兼容与跨网投屏:支持手机、平板、电脑等多种设备之间的自由组合投屏,且无需连接 WiFi,通过跨屏技术打破网络限制,扫一扫即可投屏。 广泛的应用支持:支持 10000+APP 投屏,包括综合视频、网盘与浏览器、美韩剧、斗鱼、虎牙等直播平台,还能将央视、湖南卫视等各大卫视的直播内容一键投屏。 高清流畅投屏体验:腾讯独家智能音画调校技术,支持 4K 高清画质、240Hz 超高帧率,低延迟不卡顿,能为用户提供更高清、流畅的视觉享受。 会议办公功能强大:拥有全球唯一的 “超级投屏空间”,扫码即投,无需安装。支持多人共享投屏、远程协作批注,PPT、Excel、视频等文件都能流畅展示,还具备企业级安全加密,保障会议资料不泄露。 多人互动功能:支持多人投屏,邀请好友加入投屏互动,远程也可加入。同时具备一屏多显、语音互动功能,支持多人连麦,实时语音交流。 文件支持全面:支持 PPT、PDF、Word、Excel 等办公文件,以及视频、图片等多种类型文件的投屏,还支持网盘直投,无需下载和转格式。 特色功能丰富:投屏时可同步录制投屏画面,部分版本还支持通过触控屏或电视端外接鼠标反控电脑,以及在投屏过程中用画笔实时标注等功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值