A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 冯超 高级黑马   /  2013-10-15 15:53  /  1602 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 冯超 于 2013-10-15 19:54 编辑

今天写一个jquery的ajax用户登录验证,发现需要用到json,于是就有了下面的笔记。
  1. $.ajax({  
  2.                     type: "POST",  
  3.                     url: "../servlet/AdminServlet",  
  4.                     data: formdata,  
  5.                     dataType: 'json',
  6.                     success: function(data){  
  7.                               var res = data.result; //获取从后台调用的数据
  8.                               //alert(res);
  9.                               if(res == "no") {
  10.                                       $("#sp").html("用户名获取密码有误");
  11.                                       $("#sp").css("color","red");        
  12.                               } else {
  13.                                       $("form").eq(0).submit();//jquery过去选择器 第一个表单
  14.                               }
  15.                               
  16.                     }               
  17.                   });
复制代码
这个是我登录页面写的js,前面就不说了,主要说:
success: function(data){  
                  
}这个内容。
学过原生态javascript的人肯定知道,可以用httpResponse这个对象获取后台(response.getOutputStream().writer("str".getBytes()))打印的内容。
在这个方法中,data就是获取后台打印的那个内容,不过那个内容的格式必须是json的,套用51cto版主的话来说就是: 后台out.write()方法里是类似JSON的字符串,你可以手动拼接,或者用些工具,然后前台的success:function(data)会自动转换为JSON数据,你要取,可以直接data.属性即可

对于这句话,我只知道当初学黑马冯威视频的时候提到过json,里面的内容如下:
  •     var test = {"first": "zhangsan", "second": "lisi", "last": "wangwu" };
  •     var test1 = {"person": ["students", "teachers"]};
  •     var test2 ={"animal": [
  •                                             {"cat": ["whit cat", "black cat"]} ,
  •                                             {"dog": ["big dog", "small dog"]}
  •                                     ]
  •                          };
  •     alert(test.first);
  •     alert(test1.person[0]);
  •     alert(test2.animal[0].cat[1]);
  • 这一点也是很重要的。
  • 问题是如何在后台将数据封装称json格式了?
  •             答案是JSONObject这套API,里面很好的接口封装了json。
  • 下面java类就是JSONObject的用法:
    1. package test;

    2. import net.sf.json.JSONArray;
    3. import net.sf.json.JSONObject;

    4. public class JsonTest {

    5.         /**
    6.          * @param args
    7.          */
    8.         public static JSONObject getJSONObject() {
    9.                 JSONObject jsonObject = new JSONObject();
    10.                 jsonObject.put("1", "sad");
    11.                 jsonObject.put("2", new String("nihao"));
    12.                
    13.                 return jsonObject;
    14.         }
    15.         public static void main(String[] args) {
    16.                 // TODO Auto-generated method stub
    17.                 //1.打印那个json对象
    18.                 JSONObject jsonObject = getJSONObject();
    19.                 System.out.println();
    20.                 //2.判断输出类型
    21.                 boolean isArray = jsonObject.isArray();     
    22.             boolean isEmpty = jsonObject.isEmpty();     
    23.             boolean isNullObject = jsonObject.isNullObject();
    24.             
    25.             //添加属性     
    26.         jsonObject.element("address", "swap lake");     
    27.         System.out.println("添加属性后的对象==>"+jsonObject);
    28.         
    29.         //返回一个JSONArray对象     
    30.         JSONArray jsonArray = new JSONArray();     
    31.         jsonArray.add(0, "this is a jsonArray value");     
    32.         jsonArray.add(1,"another jsonArray value");     
    33.         jsonObject.element("jsonArray", jsonArray);     
    34.         JSONArray array = jsonObject.getJSONArray("jsonArray");     
    35.         System.out.println("返回一个JSONArray对象:"+array);
    36.         
    37.         //根据key返回一个字符串     
    38.         String jsonString = jsonObject.getString("1");     
    39.         System.out.println("jsonString==>"+jsonString);
    40.         }

    41. }
    复制代码

所以若在后台:jsonObject.put("result", "yes");
out.write(jsonObject.toString().getBytes());

则在succeed方法中应:data.result就可以获取打印的yes!


json.jpg (23.05 KB, 下载次数: 14)

json要导入的jar包

json要导入的jar包

评分

参与人数 1技术分 +1 收起 理由
周志龙 + 1

查看全部评分

1 个回复

倒序浏览
自己顶一个,喜欢 黑马,喜欢论坛,喜欢在里面记日志
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马