ajax学习(理解即可)

ajax介绍

复制代码
局部刷新技术,可以在不重新加载整个页面的情况下,针对局部的内容进行更新。

传统请求:浏览器会将服务器的响应显示的浏览器的页面中
ajax请求:浏览器只负责接受服务器给出的响应,但是浏览器不做任何处理。

ajax请求的应用场景:一个网站的所有请求都可以采用ajax请求。

原生js的ajax请求(理解)

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<input type="button" value="js_ajax" onclick="js_ajax()"><br>
<span id="mySpan" style="color: red">此处用来显示服务器响应的数据</span>
</body>

<script>

    function js_ajax() {
        //创建ajax引擎对象
        let request = new XMLHttpRequest();

        //绑定onreadystatechange事件,作为响应成功时的回调函数
        /**
         *
         *      readystate:
         *      HTTP 请求的状态.当一个 XMLHttpRequest 初次创建时,
         *      这个属性的值从 0 开始,直到接收到完整的 HTTP 响应,这个值增加到 4。

                 0 Uninitialized 初始化状态。XMLHttpRequest 对象已创建或已被 abort() 方法重置。
                 1 Open open() 方法已调用,但是 send() 方法未调用。请求还没有被发送。
                 2 Sent Send() 方法已调用,HTTP 请求已发送到 Web 服务器。未接收到响应。
                 3 Receiving 所有响应头部都已经接收到。响应体开始接收但未完成。
                 4 Loaded HTTP 响应已经完全接收。


                status : http协议响应的状态码
                        200:表示ok
                        404: 表示 找不到资源
                        302:表示重定向的

                responseText : 服务器给出的响应体

         */
        request.onreadystatechange=function () {
            //响应成功的回调函数
            if(request.readyState==4&&request.status==200){
                //获取响应体
                let responseText = request.responseText;
                //dom操作
                document.getElementById("mySpan").innerHTML=responseText;
            }
        }

        //通过open方法设置请求的参数
        /**
         *   method:请求的方式
         *   url:请求的地址
         *   async:是否异步,true表示异步
         *
         */
        request.open("get","demoServlet",true);

        //通过send方法发送请求
        request.send();
    }

</script>
</html>

同步异步

复制代码
同步:浏览器在还没有接受到服务器给出的响应时,浏览器处于卡死的状态。无法进行其他操作。 (java单线程)
异步:浏览器在还没有接收到服务器的响应时,浏览器的任何其他操作照样执行,不受任何影响。(ajax请求是子线程去发送的。)

企业开发:基本使用异步。

jquery的ajax

注意:需要引入jquery文件

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <input type="button" value="jquery_get" onclick="jquery_get()"><br>
    <input type="button" value="jquery_post" onclick="jquery_post()"><br>
    <input type="button" value="jquery_ajax" onclick="jquery_ajax()"><br>
    <span id="mySpan" style="color: red">此处用来显示服务器响应的数据</span>
</body>
<script src="js/jquery-2.1.0.js"></script>
<script>

    function jquery_get() {
        $.get("demoServlet",{"username":"zhangsan"},function (data) {

            //将响应体设置到myspan中
            document.getElementById("mySpan").innerHTML=data;
        });
    }

    function jquery_post() {
        $.post("demoServlet",{"username":"zhangsan"},function (data) {

            //将响应体设置到myspan中
            document.getElementById("mySpan").innerHTML=data;
        });
    }


    function jquery_ajax() {

        $.ajax({
            url:"demoServlet",
            data:{
                "username":"lisi"
            },
            async:true,
            type:"get",
            success:function (res) {
                //请求成功的回调函数,参数就是响应体
                document.getElementById("mySpan").innerHTML=res;
            }
        });
    }

</script>
</html>
html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <!--
        this指代当前标签对象

    -->
    用户名: <input type="text" value="" name="username" onblur="validateUsername(this.value)">
    <span id="myspan"></span>
</body>
<script src="js/jquery-2.1.0.js"></script>
<script>

    function validateUsername(username) {

        //document.getElementById("").value;

        $.ajax({
            url:"validateUsername",
            data:{
                "username":username
            },
            success:function (res) {
                //console.log(typeof(res)+":"+res);
                //这是请求成功的回调函数,res是响应体

                let myspan = document.getElementById("myspan");
                if(res=="true"){
                    //校验成功
                    //设置标签的文本值
                    myspan.innerHTML="用户名可用";
                    //修改css样式
                    myspan.style.color="green";
                }else if(res=="false"){
                    //校验失败a
                    //设置标签的文本值
                    myspan.innerHTML="用户名已存在";
                    //修改css样式
                    myspan.style.color="red";
                }
            }
        });
    }

</script>
</html>
相关推荐
nenchoumi31195 分钟前
UE5 学习系列(五)导入贴图资产
学习·游戏·ue5·机器人
bug总结11 分钟前
记录下three.js学习过程中不理解问题----材质(material)⑤
学习·材质
Y31742922 分钟前
Python Day50 学习(仍为日志Day19的内容复习)
python·学习·机器学习
ThreeYear_s7 小时前
基于FPGA的PID算法学习———实现P比例控制算法
学习·fpga开发
恰薯条的屑海鸥7 小时前
零基础在实践中学习网络安全-皮卡丘靶场(第十一期-目录遍历模块)
学习·安全·web安全·渗透测试·网络安全学习
nenchoumi31199 小时前
Swift 6 学习笔记(二)The Basics
笔记·学习·swift
凡人的AI工具箱10 小时前
PyTorch深度学习框架60天进阶学习计划-第57天:因果推理模型(二)- 高级算法与深度学习融合
人工智能·pytorch·深度学习·学习·mcp·a2a
Gsen281910 小时前
AI大模型从0到1记录学习 大模型技术之机器学习 day27-day60
人工智能·学习·机器学习
nenchoumi311911 小时前
UE5 学习系列(九)光照系统介绍
java·学习·ue5
梦境虽美,却不长11 小时前
数据结构 (树) 学习 2025年6月12日12:59:39
数据结构·学习·二叉树·霍夫曼树·非二叉树