jQuery获取servlet返回的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.csdn.net/huhai463127310/article/details/4901654

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值