Ajax && Json对象

1. Json 引入

基于JS 的一种轻量级的数据交换格式!“key”:“value”的书写格式

JavaScript 对象表示法(JavaScript Object Notation)。

JSON 是存储和交换文本信息的语法。类似 XML。

JSON 比 XML 更小、更快,更易解析。

2. Json 格式语法
//JSON 对象
{ "name":"张三" , "age":22}
//JSON 数组
{
  "student": [
    { "name":"张三" , "age":22 },
    { "name":"李四" , "age":23 },
    { "name":"王五" , "age":24 }
  ]
}
//JSON 嵌套
{
  "student": [
    { "name":"张三" , "age":22 ,"score":{"chinese":90,"math":100,"english":80} },
    { "name":"李四" , "age":23 ,"score":{"chinese":70,"math":90, "english":90} },
    { "name":"王五" , "age":24 ,"score":{"chinese":80,"math":60, "english":90} }
  ]
}
//把 Json 串换成 Json 对象
var dataObj=eval("("+data+")");//转换为 json 对象
 

 
3. Ajax&Json 交互简单实例
获取Json 对象:Json 第三方 jar 包引入: Json-lib
private void getJsonObject(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
    PrintWriter out=response.getWriter();
    // String resultJson="{\"name\":\"张三\",\"age\":22}"; //引入jar包前
    JSONObject resultJson=new JSONObject();
//引入jar包后
    resultJson.put("name", "张三");
    resultJson.put("age", 22);
    out.println(resultJson);
    out.flush();
    out.close();
}
<script type="text/javascript">
    function loadInfo(){
        var xmlHttp;
        if(window.XMLHttpRequest){
            xmlHttp=new XMLHttpRequest();
        }else{
            xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlHttp.onreadystatechange=function(){
            if(xmlHttp.readyState==4 && xmlHttp.status==200){
                alert(xmlHttp.responseText);
                var dataObj=eval("("+xmlHttp.responseText+")");  //将Json串转换为Json对象
                document.getElementById("name").value=dataObj.name;
                document.getElementById("age").value=dataObj.age;
            }
        };
        xmlHttp.open("get", "getAjaxInfo?action=jsonObject", true);        
        xmlHttp.send();
    }
</script>
获取Json 数组
private void getJsonArray(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    PrintWriter out=response.getWriter();
    JSONObject resultJson=new JSONObject();
    JSONArray jsonArray=new JSONArray();
    JSONObject jsonObject1=new JSONObject();
    jsonObject1.put("name", "张三");
    jsonObject1.put("age", 22);
    JSONObject jsonObject2=new JSONObject();
    jsonObject2.put("name", "李四");
    jsonObject2.put("age", 23);
    JSONObject jsonObject3=new JSONObject();
    jsonObject3.put("name", "王五");
    jsonObject3.put("age", 24);
    jsonArray.add(jsonObject1);
    jsonArray.add(jsonObject2);
    jsonArray.add(jsonObject3);
    
    resultJson.put("students", jsonArray);
    out.println(resultJson);
    out.flush();
    out.close();
}
 

获取Json 嵌套:无限嵌套

private void getJsonNested(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    PrintWriter out=response.getWriter();
    JSONObject resultJson=new JSONObject();
    JSONArray jsonArray=new JSONArray();
    JSONObject jsonObject1=new JSONObject();
    jsonObject1.put("name", "张三");
    jsonObject1.put("age", 22);
    
    JSONObject scoreObject1=new JSONObject();
    scoreObject1.put("chinese", 90);
    scoreObject1.put("math", 100);
    scoreObject1.put("english", 80);
    jsonObject1.put("score", scoreObject1);
    
    JSONObject jsonObject2=new JSONObject();
    jsonObject2.put("name", "李四");
    jsonObject2.put("age", 23);
    
    JSONObject scoreObject2=new JSONObject();
    scoreObject2.put("chinese", 70);
    scoreObject2.put("math", 90);
    scoreObject2.put("english", 90);
    jsonObject2.put("score", scoreObject2);
    
    JSONObject jsonObject3=new JSONObject();
    jsonObject3.put("name", "王五");
    jsonObject3.put("age", 24);
    
    JSONObject scoreObject3=new JSONObject();
    scoreObject3.put("chinese", 80);
    scoreObject3.put("math", 60);
    scoreObject3.put("english", 90);
    jsonObject3.put("score", scoreObject3);
    
    jsonArray.add(jsonObject1);
    jsonArray.add(jsonObject2);
    jsonArray.add(jsonObject3);
    
    resultJson.put("students", jsonArray);
    out.println(resultJson);
    out.flush();
    out.close();
}
function loadInfo2(){
    var xmlHttp;
    if(window.XMLHttpRequest){
        xmlHttp=new XMLHttpRequest();
    }else{
        xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlHttp.onreadystatechange=function(){
        if(xmlHttp.readyState==4 && xmlHttp.status==200){
            alert(xmlHttp.responseText);
            var dataObj=eval("("+xmlHttp.responseText+")");
            var st=document.getElementById("studentTable");
            alert(dataObj.students.length);
            var newTr; // 行
            var newTd0; // 第一列
            var newTd1; // 第二列
            var newTd2; // 第三列
            for(var i=0;i<dataObj.students.length;i++){
                var student=dataObj.students[i]; //获取每个对象
                newTr=st.insertRow(); // 插入一行,返回行对象
                newTd0=newTr.insertCell(); // 插入一列,返回列对象
                newTd1=newTr.insertCell();
                newTd2=newTr.insertCell();
                newTd0.innerHTML=student.name; // 赋值
                newTd1.innerHTML=student.age;
                newTd2.innerHTML="语文:"+student.score.chinese+",数学:"+student.score.math+",英语:"+student.score.english;
            }
        }
    };
    // xmlHttp.open("get", "getAjaxInfo?action=jsonArray", true); //获取Json 数组
    xmlHttp.open("get", "getAjaxInfo?action=jsonNested", true);   //获取Json 嵌套
    xmlHttp.send();
}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值