JavaWeb黑马程序员day22之AJAX和JSON

学习目标:

完成对AJAX和JSON两种技术的学习

学习内容:

1.AJAX
1.概念:
AJAX全称"异步的JavaScript和XML"
同步:即客户端浏览器向服务器端发送请求,客户端必须等待服务器端完成响应,在服务器处理请求时,客户端不能进行其它操作
异步:即客户端浏览器向服务器端发送请求,客户端无需等待服务器端完成响应,在服务器处理请求时,客户端可以进行其它操作。
2.作用:
AJAX可以使网页实现异步的更新。这意味着在不刷新整个网页页面的前提下,可以完成对网页局部的更新。
举个例子,当我们使用百度的搜索功能时,鼠标聚焦到搜索框,并输入一些文字,此时搜索框下面就会通过"联想"功能将相关搜索标题显示出来。此时整个网页页面并没有刷新,而是网页中的这个搜索框这一小部分进行了刷新,这种功能的实现就是使用了AJAX技术。

3.使用:
AJAX的实现是通过浏览器内置的Ajax引擎完成的。它有以下实现方式:
1.JS的原生方式
2.JQuery方式
通过JS的原生方式实现AJAX较为复杂,我们一般使用最常用的JQuery方式
JQuery实现AJAX方式

	1.$.ajax()
	2.$.get()
	3.$.post()

$.ajax()方式的说明:

<!--
    $.ajax({
        url:    请求的资源路径
        type:   请求方式
        data:   请求参数(使用Json格式)
        dataType:   响应的数据格式
        success:    回调函数,响应成功自动执行该函数
        error:      回调函数,响应失败自动执行该函数
    
    
    })


-->

2.JSON
—1.概念:一种轻量级的数据交换格式
—2.作用:易于人们阅读和编写,也易于机器解析和生成,能够有效提高网络传输效率
—3.使用
语法
基本规则

  1. .一个JSON对象用一对花括号表示
    2.每个键值对之间用逗号隔开(值的数据类型可以为数字型,布尔型,字符串型,JSON对象型,数组型,null)
    3.数组用方括号表示

如何获取JSON对象的数据
1.JSON对象.键名
2.JSON对象[“键名”]—一般用于使用for…in…遍历JSON对象
3.JSON对象[索引]

遍历
对于JSON对象,一般使用for…in…遍历
演示:

<script>
        var json1 = {"name":"Jack","age":21,"gender":true};
        var json2 = {"Persons":[{"name":"Jack","age":21,"gender":true},{"name":"Tom","age":21,"gender":true}]};
        //遍历json1
        for(var key in json1){
            //alert(json1.key); 此时json1.key等价于json1."key",因此无法正确获取键对应的值
            alert(json1[key]);  //正确
        }
        //遍历json2
        for(var key in json2){
            var array = json2[key];
            for(var i = 0; i <array.length;i++){
                alert(array[i].name);
            }
        }
    </script>

Java对象和JSON对象之间的相互转换
在服务器端,我们最常用的操作是将Java对象转换为JSON对象,如何进行转换呢?答案是使用解析器,我们使用jackson解析器来将Java对象转换为JSON对象
使用步骤:

  1. .导入jackson的jar包
    2.创建核心对象ObjectMapper
    3.调用相关方法将Java对象转换为JSON对象
@Test
    public void test4(){
        ObjectMapper mapper = new ObjectMapper();   //创建核心对象ObjectMapper
        User user = new User();     //创建一个Java对象,并设置它的属性值
        user.setName("Jack");
        user.setId(1);
        user.setPassword("123");
        try {
            String Json = mapper.writeValueAsString(user);  //调用writeValueAsString(),将Java对象转换为Json字符串
            System.out.println(Json);       //打印Json
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
    }

输出结果:
在这里插入图片描述

3.案例
案例需求:完成用户名的自动校验,当用户名的文本输入框离焦时,自动检验用户输入的用户名是否在数据库中存在,如果存在,提示:名字太受欢迎了,换一个吧~;如果不存在,则提示可用

解题思路:给文本输入框绑定离焦事件,一旦触发,客户端浏览器发送AJAX异步请求给服务器端,服务器通过该用户名通过数据库将其封装为一个Java对象,最后将该Java对象转换为JSON对象,响应给浏览器端,如果JSON对象不为null,则说明已经存在该用户名,如果为null,说明数据库中不存在该用户

运行结果:
在这里插入图片描述

通过这个案例我们得出结论:AJAX异步请求可以实现网页的异步更新,即在不刷新整个页面的情况下,完成对网页局部的更新。

学习时间:

2021-1-14

学习产出:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值