AJAX 基础学习笔记

对于前端框架的补充学习内容 了解学习Ajax入门知识

1 AJAX 入门

1.1 AJAX 简介

AJAX(Asynchronous JavaScript and XML)即异步的 JavaScript 和 XML 是一种在无需重新加载整个网页的情况下 与服务器进行异步通信并更新部分网页的技术

核心原理

它利用了浏览器内置的 XMLHttpRequest 对象(现代也常用 fetch API),在不刷新整个页面的前提下,与服务器进行异步数据交换。客户端可以在后台向服务器发送请求并接收响应,然后根据响应内容动态更新网页的部分内容,提升用户体验


1.2 AJAX使用

1.2.1 axios 库

1.2.1.1 axios 概念与引入

1 引入库

复制代码
https://unpkg.com/axios/dist/axios.min.js

2 使用axios函数

传入配置对象

再用.then回调函数接受结果,并作后续处理

案例 :获取省份

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>AJAX概念与入门</title>
</head>
<!-- 引入axios库 -->
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>

<script>
    axios({
        url:"http://hmajax.itheima.net/api/province",
    }).then(res=>{
        console.log(res.data.list)
        document.querySelector('.mp').innerHTML = res.data.list.join('<br>')
        })
</script>
<body>
    <p class="mp"></p>
</body>
</html>

1.2.1.2 URL

URL 统一资源定位符 用于定位互联网上资源的地址 用于访问资源

组成:

协议:超文本传输协议 规定浏览器与服务器间传输数据的格式

域名:标记服务器在互联网中方位

资源路径:标记资源在服务器下的具体位置

查询参数:

1 定义:浏览器提供给服务器的额外信息 让服务器返回浏览器想要的数据

2 语法:http://xxxx.com./xxx/xxx?参数名1=值1&参数名2=值2

axios查询语法:

使用axios提供的params选项 运行时会在运行时 会把值拼接到?后面

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>查询参数</title>
</head>
<!-- 引入axios库 -->
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>

<script>
    axios({
        url:"http://hmajax.itheima.net/api/city",
        params: {
            pname: "山西省"
        }
    }).then(response => {
        document.querySelector(".mp").innerHTML = response.data.list.join("<br>");
        console.log(response.data.list);
    });
</script>

<body>
    <p class="mp"></p>
</body>

</html>

案例 :获取地区

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>获取地区</title>
</head>
<body>
    <div>
        <h2>获取省份</h2>
        <textarea class="pname"></textarea>
    </div>
    <div>
        <h2>获取城市</h2>
        <textarea class="cname"></textarea>
    </div>
    <button type="button" class="btn">获取</button>
    <div>
        <table>
            <thead>
                <tr>
                    <th>区县</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>区县</td>
                </tr>
            </tbody>
    </div>
</body>
<style>
    .pname,.cname{
        width: 100%;
        height: 100px;
    }
    table{
        width: 100%;
    }
    table,th,td{
        border: 1px solid #000;
        border-collapse: collapse;
    }
    th,td{
        padding: 10px;
    }
    th{
        background-color: #f2f2f2;
    }
    tr:nth-child(odd){
        background-color: #f2f2f2;
    }
    tr:nth-child(even){
        background-color: #fff;
    }
    .btn{
        width: 100px;
        height: 40px;
        background-color: #f2f2f2;
        border: none;
        outline: none;
        cursor: pointer;
    }
    .btn:hover{
        background-color: #e0e0e0;
    }
    .btn:active{
        background-color: #d9d9d9;
    }
</style>

<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>

<script>
    document.querySelector('.btn').addEventListener('click', ()=>{
        let pname = document.querySelector('.pname').value
        let cname = document.querySelector('.cname').value
        axios({
            url:"http://hmajax.itheima.net/api/area",
            params:{
                pname:pname,
                cname:cname
            }
        }).then(res => {
            console.log(res.data.list)
            let str = ''
            res.data.list.forEach(item => {
                str += `<tr>
                            <td>${item}</td>
                        </tr>`
            })
            document.querySelector('tbody').innerHTML = str
        })
    })
</script>
</html>

1.2.1.3 请求方法

对服务器资源要执行的方法

|--------|----------|
| 请求方法 | 操作 |
| GET | 获取数据 |
| POST | 请求数据 |
| PUT | 修改数据(全部) |
| DELETE | 删除数据 |
| PATCH | 修改数据(部分) |

axios请求配置:

url:请求数据的URl网址

method:请求的方法 GET可以省略(不区分大小写)

data:请求数据

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>请求方法和数据请求</title>
</head>
<body>
    <div class="name">
        <input type="text" placeholder="请输入用户名">
    </div>
    <div class="password">
        <input type="password" placeholder="请输入密码">
    </div>
        <button class="submit">提交</button>
</body>

<style>
    .name{
        margin-top: 20px;
    }
    .password{
        margin-top: 20px;
    }
    .submit{
        margin-top: 20px;
    }
</style>


<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>

<script>
    document.querySelector('.submit').addEventListener('click', function(){
        let name = document.querySelector('.name input').value;
        let password = document.querySelector('.password input').value;
        axios({
            method: 'post',
            url: 'http://hmajax.itheima.net/api/register',
            data: {
                name: name,
                password: password
            }
        }).then(res => {
            console.log(res);
        }).catch(err => {
            console.log(err);
        })
    })
</script>
</html>

1.2.2 XMLHttpRequest原理

1.2.3 接口文档

接口文档:描述接口的文章 (后端给前端使用的文档)

接口:使用的AJAX和服务器通讯时 使用的URL 请求方法以及参数

1.2.4 from-serialize插件

作用:快速获取表单元素的值


1.3 AJAX 错误处理

在从服务器中获取信息时会出现报错 将错误数据进行渲染后显示给用户界面

语法:在then方法后面 通过点语法调用catch方法 传入回调函数并传入参数

html 复制代码
<script>
    document.querySelector('.submit').addEventListener('click', function(){
        let name = document.querySelector('.name input').value;
        let password = document.querySelector('.password input').value;
        axios({
            method: 'post',
            url: 'http://hmajax.itheima.net/api/register',
            data: {
                name: name,
                password: password
            }
        }).then(res => {
            console.log(res);
        }).catch(err => {
            console.log(err);
        })
    })

相关推荐
啊我不会诶2 小时前
Codeforces Round 1072 (Div. 3)补题
笔记·学习·算法
代码游侠2 小时前
嵌入式开发代码实践——串口通信(UART)开发
c语言·开发语言·笔记·单片机·嵌入式硬件·重构
EverydayJoy^v^2 小时前
RH134学习进程——六.管理SELinux安全
linux·学习·安全·selinux
看海天一色听风起雨落2 小时前
周报(20260119-20260125)
笔记
Aliex_git2 小时前
Git SSH 配置
笔记·git·学习·ssh
zyb11475824332 小时前
JVM的学习
jvm·python·学习
LGL6030A2 小时前
Java学习历程24——仿真智能集群项目(2)
学习
后来后来啊2 小时前
2026.1.22学习笔记
笔记·学习
Nan_Shu_6143 小时前
学习: 尚硅谷Java项目之尚庭公寓(4)
学习