Ajax

Ajax

Asynchronous JavaScript And XML : 异步JavaScript 和XML,不是一门编程语言,指的是一种前后端的交互方式。是指客户端与服务器交换数据并更新在局部页面的技术,不需要重新加载整个页面。
核心就是异步加载(局部刷新)

关于同步异步

  • : 假如说需要做三件事情,
    同步 : 第一件执行完毕之后才能执行第二件,
    异步 : 三件事可以同时做

传统web数据交互和Ajax数据交互的区别

  • 客户端请求方式不同:
    • 传统: 浏览器发送同步请求
    • Ajax:异步引擎对象发送异步请求
  • 服务端响应方式不同
    • 传统: 响应完整的页面(jsp)
    • Ajax : 只响应需要的数据
  • 客户端处理方式不同
    • 传统:需要等待服务端响应完成并重新加载整个页面,用户才可以进行后续的操作
    • Ajax:动态更新页面中的局部内容,并不会影响到用户在当前的其他操作

Ajax原理:Ajax的工作原理相当于在客户端和服务器之间加了一中间层,使用户操作与服务端响应异步化。并不是所有的请求都提交给服务器,类似一些数据验证和数据处理等都交给Ajax引擎自己完成,只有确认需要从服务器端读取新数据时再由Ajax引擎代为向服务器请求提交请求

Ajax 技术的核心 : XMLHttpRequest
常用方法:
1.open() 创建一个新的HTTP请求。
2.send()将请求发送到服务端。
常用事件:
onreadystatechange : 指定回调函数。
常用属性:
readyState : XMLHttpRequest的状态信息。
状态码表示的意义:
0 : XMLHttpRequest 对象未完成初始化。
1 : XMLHttpRequest 对象开始发送请求。
2 : XMLHttpRequest 对象的请求发送完成。
3 : XMLHttpRequest 对象开始读取响应。
4 : XMLHttpRequest 对象读取响应结束。

入门案例

需求:
1.点击提交按钮,向服务器端发送请求,等待响应。
2.同时在input框中输入信息。
3.服务端返回“helllo”字符串,在页面进行展示。

1.建立页面
在这里插入图片描述
2.配置好servlet
在这里插入图片描述
3.在web.xml建立映射
在这里插入图片描述
4.验证javascript 没有问题
在这里插入图片描述
5.详细设置(Jquery封装的)
在这里插入图片描述
将servlet设置为等待三秒,为了实现异步输入
在这里插入图片描述

Ajax 实现原理

在这里插入图片描述
浏览器将数据通过js发送给引擎,然后引擎发送给服务器

传输过程:当焦点离开input,立刻取到输入进去的lisi,发送到服务器上,映射到对应的servlet上的doPost, result变成false ,然后通过在这里插入图片描述返回到Ajax引擎中,然后判断服务器成功处理请求,进入回调函数,显示(else)

public class UserServlet extends HttpServlet {
    private final String USERNAME = "zhangsan";
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String name = req.getParameter("name");
        String res = "false";
        if(name.equals(USERNAME))
            res = "true";
        resp.getWriter().print(res);
    }
}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <script type="text/javascript">
        function validation() {
            var name = document.getElementById("name").value;
            //创建XMLHttpRequest对象
            xmlHttpRequest = creatXMLHttpRequest();
            //设置回调函数
            xmlHttpRequest.onreadystatechange = callback;
            //初始化XMLHttpRequest组件
            var url = "user.do?name="+name;
            xmlHttpRequest.open("POST",url);
            xmlHttpRequest.send(null);
        }

    //    创建XMLHttpRequest对象
        function creatXMLHttpRequest() {
            if(window.XMLHttpRequest){
                return new XMLHttpRequest();
            }else{
                return new ActiveXObject("Microsoft.XMLHTTP");
            }
        }

        //定义回调函数
        function callback() {
            if (xmlHttpRequest.readyState == 4 && xmlHttpRequest.status == 200){
                var data = xmlHttpRequest.responseText;
                if(data == "true"){
                    document.getElementById("info").innerHTML = "用户名已存在!";
                }else{
                    document.getElementById("info").innerHTML = "用户名可以使用";
                }
            }
        }
    </script>
</head>
<body>
<%--onblur 失去焦点事件--%>
    用户名:<input type="text" onblur="validation()" id="name">
    <div id="info"></div>
</body>
</html>

用原生js
在这里插入图片描述

js传统方式调用Ajax有很多不足,步骤不易施展,JQuery对Ajax进行了封装,屏蔽了很多底层代码
语法
$.ajax[(settings)];
常用属性参数:

  • url :要请求的服务端资源
  • type :请求类型,默认是GET
  • data : 发送到服务端的参数。
  • dataType : 服务端返回的数据类型(text,json,html,xml)
    常用函数参数:
  • success :请求成功的回调函数
  • error : 请求失败的回调函数
  • complete : 请求完成的回调函数(无论成功或失败)
<script type="text/javascript" src="js/jquery-3.4.0.min.js"></script>
    <script type="text/javascript">
        function validation() {
            var name = $("#name").val();
            $.ajax({
               url:"user.do",
               type:"POST",
               data:"name="+name,
               success:function (data) {
                   if(data == "true"){
                       $("#info").html("用户已存在");
                   }else{
                       $("#info").html("用户可以使用");
                   }
               }
            });
        }
    </script>

Ajax 返回JSON格式数据
var user={
id : 1,
name:"张三“,
pwd : 123
}

没有解析之前是需要手动拼接成json格式发送给客户端
在这里插入图片描述在这里插入图片描述
但是这种方式显然是不可取的
在工程上一般都是采取自动转换成json格式
需要导入jar包
在这里插入图片描述在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值