黑马程序员技术交流社区

标题: 【石家庄校区】AJax&JSON [打印本页]

作者: heifachangcun    时间: 2019-1-11 14:42
标题: 【石家庄校区】AJax&JSON
本帖最后由 小石姐姐 于 2019-1-17 09:52 编辑

AJax(**异步,局部刷新**)

        概念:
                英文全拼:ASynchronous JavaScript And XML 异步的JavaScript和XML
                1.异步和同步:客户端和服务器端相互通信的基础上
                        同步请求:
                                客户端必须等待服务器端的响应,在等待期间客户端不能做其他操作
                        异步(可理解为多线程)请求:
                                客户端不需要等待服务器端的响应,在服务器处理请求的过程中,客户端可以去进行其他的操作
                        **AJax支持异步请求,也支持同步请求.
                                          Ajax是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术;通过在后台与服务器进行少量数据交换,Ajax可以使
                                  网页实现异步更新,这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新;传统的网页(不适用Ajax)如果需要
                                  更新内容,必须重载整个网页页面.
                *注:对网页主体不影响的情况下,对局部内容进行刷新
                        作用:提升用户的体验
        实现方式
                1.原生的JS实现方式(了解)
                        ajax也支持同步请求
                2.JQuery实现方式
                        1.$.ajax()发送异步请求
                                语法:
                                    
[Java] 纯文本查看 复制代码
    $.ajax({键值对});
                                                "type":"post/get",  //请求方式
                                                "url":"xxx",  //请求路径
                                                "data":"xxx=xxx & xxx=xxx",  //请求参数
                                                          或{"xxx":"xxx","xxx":"xxx"}
                                                        如:data:{"username":"jack","age":23},-->推荐使用
                                                "success":function(data){},    //表示响应成功会执行的回调函数
                                                                //data代表的是服务器返回的数据
                                                "error":function(data){},  //表示如果请求出错,会执行的回调函数               
                                                dataType:"text/json/jsonp"        //设置接收到的响应数据的格式  
              

                                                注意:如果不写dataType默认按服务器的响应头Content-Type来决定,MIME类型
                                                        dataType
                                                                Text :文本
                                                                json:json格式
                                                                jsonp:解决跨域问题  cross domain

                        2.$.get()-->发送get请求
                                语法:
                                
[Java] 纯文本查看 复制代码
        $.get(url,[data],[callback],[type])
                                                url:请求路径
                                                data:请求参数
                                                        "xxx=xxx & xxx= xxx",  //请求参数
                                                          或{"xxx":"xxx","xxx":"xxx"}
                                                callback:回调函数
                                                type:请求参数
                                                        text/json

                        3.$.post()-->发送post请求
                                语法:
                                 
[Java] 纯文本查看 复制代码
       $.post(url,[data],[callback],[type])
                                                url:请求路径
                                                data:请求参数
                                                callback:回调函数
                                                type:请求参数


****JSON
        1.概念        JavaScript Object Notation JavaScript对象表示法
                                *本质:js对象 --->对象.属性--->获取值
                如: var p = {"name": "张三","age":"23"};
                        Json现多用于存储和交换文本信息的语法
                        进行数据的传输
                *json作为一种数据协议的格式
        2.语法:
                1.规则:
                        1.数据在名称值对中:json数据是由键值对构成的
                                键用引号(单双皆可)引起来
                                值的取值类型
                                        1.数字
                                        2.字符串
                                        3.逻辑值(true/false)
                                        4.数组(在方括号中)
                                        5.对象(在花括号中)
                                        6.null
                        2.数据由逗号分隔
                                多个键值对由逗号分隔
                        3.花括号保存对象     
                                使用{}定义json格式     {"address":{"province":"陕西"....}}
                        4.方括号保存数组        
                                []    {"persons":[{},{}]}

                                使用:
                                        嵌套格式:
                                                第一种: {}->[]

                                例子:
[Java] 纯文本查看 复制代码
 var person = {
                                                persons:[{"name":"李四","age":25,"gender":"male"},
                                                                {"name":"张三","age":26,"gender":"male"},
                                                                {"name":"王五","age":30,"gender":"female"}
                                                        ]
                                                };


                                                第二种: []->{}        

                                例子
[Java] 纯文本查看 复制代码
:var persons = [{"name":"李四","age":25,"gender":"male"},
                                                                        {"name":"掌柜三","age":29,"gender":"female"},
                                                                        {"name":"貂蝉","age":68,"gender":"male"}
                                                                        ]

                   注意:看到大括号开头代表json对象
                                        对象.属性
                                看到中括号代表数组
                                        数组[索引].属性
                                如果括号被引号引起来,就不再是对象或数组,而是字符串了        
                2.获取数据
                        基本获取:
                                1.json对象.键名
                                2.json对象["键名"]
                                3.[]->{}:数组对象[索引].键名
                                        另注嵌套{}->[]:数组对象.数组键名[索引].键名
                        遍历获取:
                                遍历获取数组的值
                        例子:                  
[Java] 纯文本查看 复制代码
var ps = [
                                        {"name": "张三", "age": 23, "gender": true},
                            {"name": "李四", "age": 24, "gender": true},
                            {"name": "王五", "age": 25, "gender": false}
                                        ];
                                  //获取ps中的所有值
                        for (var i = 0; i < ps.length; i++) {
                            var p = ps;
                            for(var key in p){
                                alert(key+":"+p[key]);
                            }
                        }

                3.JSON数据和Java对象的相互转换
                        JSON解析器:封装好的工具类
                                Jsonlib-->官方的
                                Gson   -->谷歌
                                fastjson-->阿里
                                jackson -->springMVC默认的

                        1.JSON转为Java对象(了解)
                                使用步骤
                                        1.导入jackson相关jar包
                                        2.创建Jackson核心对象objectMapper
                                        3.调用objectMapper的相关方法进行转换
                                                1.readValue(json字符串数据,Class类型)

                        2.Java对象转为JSON
                                使用步骤
                                        1.导入jackson相关jar包
                                        2.创建Jackson核心对象objectMapper
                                        3.调用objectMapper的相关方法进行转换
                                                转换方法
                                                        writeValue(参数1,obj):
                                                                参数1:
[Java] 纯文本查看 复制代码
 File:将obj对象转换为json字符串,并保存到制定文件中
                                                                                new File("保存路径")
                                                                        Writer:将obj对象转换为json字符串,将json数据填充到字符输出流中
                                                                        OutputStream:将obj对象转换为json字符串,将json数据填充到字节输出流中
                                                        writeValueAsString(obj):将对象转为json字符串


                        **jackson api
                                        ObjectMapper  mapper = new Objectmapper;
                                                mapper.writeValueAsString(对象)
                                        或
                                                mapper.writeValue(输出流,对象)

                                注解
                                        1.@JsonIgnore:排除属性
                                        2.@JsonFormat():属性值格式化
                                                   参数:pattern="yyyy-MM-dd"



                                复杂Java对象转换
                                        1.list集合
                                                数组:[{},{}]
                                        2.map集合
                                                和对象一致:{key:value,key:value}
        案例:校验用户名是否存在               
                        1.服务器响应的数据,在客户端使用时,要想当做json数据格式使用时
                                        1.$,get(type):将最后一个参数type指定为"json"
                                        2.response.setContentType("application/json;charset=utf-8")

                                手动将字符串转为json               
                                        3.JSON.parse(data)
                                        4.eval("("+data+")")







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2