当前位置: 首页 > news >正文

前端技术Ajax入门

1.1 AJAX 概念和 axios 使用

目标

  • 了解 AJAX 概念并掌握 axios 库基本使用

讲解

1. 什么是 AJAX?

  • 使用浏览器的 XMLHttpRequest 对象与服务器通信。
  • 在浏览器网页中,通过 AJAX 技术(XHR 对象)发起获取省份列表数据的请求,服务器返回准备好的省份列表数据给前端,前端将数据展示到网页。

2. 什么是服务器?

  • 可以暂时理解为提供数据的一台电脑。

3. 为何学习 AJAX?

  • 以前数据是固定的,无法随时变化。
  • 现在可以从服务器获取数据,让数据动态化。

4. 如何学习 AJAX?

  • 使用第三方库 axios,后续再学习 XMLHttpRequest 对象以了解 AJAX 底层原理。
  • axios 语法简单,让我们更关注与服务器通信,且在 Vue、React 中也使用 axios

5. 需求:从服务器获取省份列表数据并展示到页面

  • 目标资源地址:http://hmajax.itheima.net/api/province

6. 讲解 axios 语法步骤

7. 引入 axios.js 文件
 

html

<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
8. axios 函数语法
 

javascript

axios({
url: '目标资源地址'
}).then((result) => {
// 处理服务器返回的数据
});

9. 示例代码

 

html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>AJAX概念和axios使用</title>
</head>
<body>
<p class="my-p"></p>
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
<script>
axios({
url: 'http://hmajax.itheima.net/api/province'
}).then(result => {
console.log(result.data.list);
document.querySelector('.my-p').innerHTML = result.data.list.join('<br>');
});
</script>
</body>
</html>

小结

  • AJAX 的作用:浏览器和服务器之间通信,实现动态数据交互。
  • 学习方法:先掌握 axios 库,再了解 XMLHttpRequest 原理。
  • axios 体验步骤:引入库文件,使用 axios 语法。

1.2 认识 URL

目标

  • 了解 URL 的组成和作用

讲解

1. 为什么要认识 URL?

  • 了解 URL 的结构,方便与服务器有效沟通。

2. 什么是 URL?

  • 统一资源定位符,简称网址,用于定位网络中的资源(如网页、图片、数据等)。

3. URL 的组成

  • 协议:如 http,规定浏览器和服务器传递数据的格式。
  • 域名:标记服务器在互联网中的位置。
  • 资源路径:标识服务器内的具体资源。

4. 示例需求

  • 访问新闻列表的 URL:http://hmajax.itheima.net/api/news

5. 示例代码

 

javascript

axios({
url: 'http://hmajax.itheima.net/api/news'
}).then(result => {
console.log(result);
});

小结

  • URL 是什么:统一资源定位符,用于访问服务器上的资源。
  • URL 组成:协议、域名、资源路径。

1.3 URL 查询参数

目标

  • 掌握通过 URL 传递查询参数,获取匹配的数据

讲解

1. 什么是查询参数?

  • 携带给服务器的额外信息,用于获取特定数据。

2. 查询参数语法

 

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

3. axios 携带查询参数

 

javascript

axios({
url: '目标资源地址',
params: {
参数名: 值
}
}).then(result => {
// 处理服务器返回的数据
});

4. 示例需求

  • 获取“河北省”下属的城市列表:
    • URL:http://hmajax.itheima.net/api/city
    • 参数名:pname

5. 示例代码

 

javascript

axios({
url: 'http://hmajax.itheima.net/api/city',
params: {
pname: '辽宁省'
}
}).then(result => {
console.log(result.data.list);
document.querySelector('p').innerHTML = result.data.list.join('<br>');
});

小结

  • 查询参数作用:提供额外信息,获取对应数据。
  • axios 使用方法:通过 params 选项携带参数。

1.4 案例:查询地区列表

目标

  • 巩固查询参数的使用,查看多对查询参数如何传递

讲解

1. 需求

  • 根据输入的省份和城市名字,查询下属地区列表。
  • URL:http://hmajax.itheima.net/api/area
  • 参数名:
    • pname:省份名字
    • cname:城市名字

2. 示例代码

 

javascript

document.querySelector('.sel-btn').addEventListener('click', () => {
let pname = document.querySelector('.province').value;
let cname = document.querySelector('.city').value;
axios({
url: 'http://hmajax.itheima.net/api/area',
params: {
pname,
cname
}
}).then(result => {
let list = result.data.list;
let theLi = list.map(areaName => `<li>${areaName}</li>`).join('');
document.querySelector('.list-group').innerHTML = theLi;
});
});

小结

  • ES6 对象简写:属性名和值同名时可简写。

1.5 常用请求方法和数据提交

目标

  • 掌握如何向服务器提交数据

讲解

1. 请求方法

  • 常用方法:GETPOSTPUTDELETEPATCH
  • GET:获取数据(默认)。
  • POST:提交数据。

2. 何时提交数据?

  • 如订单数据、登录信息等需要保存到服务器。

3. axios 提交数据

 

javascript

axios({
url: '目标资源地址',
method: 'POST',
data: {
参数名: 值
}
}).then(result => {
// 处理服务器返回的数据
});

4. 示例需求

  • 注册账号,提交用户名和密码:
    • URL:http://hmajax.itheima.net/api/register
    • 请求方法:POST
    • 参数名:
      • username:用户名
      • password:密码

5. 示例代码

 

javascript

document.querySelector('.btn').addEventListener('click', () => {
axios({
url: 'http://hmajax.itheima.net/api/register',
method: 'POST',
data: {
username: 'itheima007',
password: '7654321'
}
});
});

小结

  • 常用请求方法POST(提交数据)、GET(查询数据)。
  • axios 核心配置项urlmethodparamsdata

1.6 axios 错误处理

目标

  • 掌握接收 axios 响应错误信息的处理语法

讲解

1. 错误处理

  • 使用 catch 方法捕获请求响应错误:
 

javascript

axios({
// ...请求选项
}).then(result => {
// 处理成功数据
}).catch(error => {
// 处理失败错误
});

2. 示例代码

 

javascript

document.querySelector('.btn').addEventListener('click', () => {
axios({
url: 'http://hmajax.itheima.net/api/register',
method: 'post',
data: {
username: 'itheima007',
password: '7654321'
}
}).then(result => {
console.log(result);
}).catch(error => {
console.log(error.response.data.message);
alert(error.response.data.message);
});
});

小结

  • 错误处理:通过 .catch 方法捕获错误信息。

1.7 HTTP 协议-请求报文

目标

  • 了解 HTTP 协议中请求报文的组成和作用

讲解

1. 请求报文组成

  • 请求行:请求方法、URL、协议。
  • 请求头:附加信息(如 Content-Type)。
  • 空行:分割请求头和请求体。
  • 请求体:发送的资源。

小结

  • 请求报文组成:请求行、请求头、空行、请求体。

1.8 请求报文-错误排查

目标

  • 了解查看请求报文的作用,辅助错误排查

讲解

  • 通过查看请求报文确认发送的数据是否正确。

小结

  • 作用:快速确认发送内容是否正确。

1.9 HTTP 协议-响应报文

目标

  • 了解响应报文的组成

讲解

1. 响应报文组成

  • 响应行:协议、状态码、状态信息。
  • 响应头:附加信息(如 Content-Type)。
  • 空行:分割响应头和响应体。
  • 响应体:返回的资源。

2. HTTP 响应状态码

  • 如 404 表示资源不存在。

小结

  • 响应报文组成:响应行、响应头、空行、响应体。
  • 状态码作用:表明请求是否成功完成。

1.10 接口文档

目标

  • 掌握接口文档的使用,配合 axios 与服务器进行数据交互

讲解

1. 接口文档

  • 描述接口的文章(由后端提供)。
  • 包含请求的 URL、方法、参数等信息。

2. 示例需求

  • 查看登录接口文档,编写登录代码。

3. 示例代码

 

javascript

document.querySelector('.btn').addEventListener('click', () => {
axios({
url: 'http://hmajax.itheima.net/api/login',
method: 'post',
data: {
username: 'itheima007',
password: '7654321'
}
});
});

小结

  • 接口文档:描述接口的文章。
  • 包含内容:URL、请求方法、参数。

1.11 案例:用户登录-主要业务

目标

  • 尝试通过页面获取用户名和密码,进行登录

讲解

1. 实现步骤

  1. 点击登录,获取并判断用户名和密码长度。
  2. 提交数据与服务器通信。

2. 示例代码

 

javascript

document.querySelector('.btn-login').addEventListener('click', () => {
const username = document.querySelector('.username').value;
const password = document.querySelector('.password').value;
if (username.length < 8) {
console.log('用户名必须大于等于8位');
return;
}
if (password.length < 6) {
console.log('密码必须大于等于6位');
return;
}
axios({
url: 'http://hmajax.itheima.net/api/login',
method: 'POST',
data: {
username,
password
}
}).then(result => {
console.log(result.data.message);
}).catch(error => {
console.log(error.response.data.message);
});
});

小结

  • 实现思路:绑定点击事件、获取输入值、判断长度、提交数据。

1.12 案例:用户登录-提示信息

目标

  • 根据提示标签和样式,给用户反馈提示

讲解

1. 封装提示框函数

 

javascript

function alertFn(msg, isSuccess) {
myAlert.classList.add('show');
myAlert.innerText = msg;
const bgStyle = isSuccess ? 'alert-success' : 'alert-danger';
myAlert.classList.add(bgStyle);
setTimeout(() => {
myAlert.classList.remove('show');
myAlert.classList.remove(bgStyle);
}, 2000);
}

小结

  • 封装函数:遇到重复逻辑时封装为函数。
  • 提示框控制:通过添加或移除类名控制显示/隐藏。

1.13 form-serialize 插件

目标

  • 使用 form-serialize 插件快速收集表单元素的值

讲解

1. 插件使用

  • 引入插件文件。
  • 使用 serialize 函数:
 

javascript

const form = document.querySelector('.example-form');
const data = serialize(form, { hash: true, empty: true });
console.log(data);

小结

  • 使用场景:快速收集表单元素的值。
  • 配置选项hash(对象/查询字符串)、empty(是否收集空值)。

1.14 案例:用户登录-form-serialize

目标

  • 使用 form-serialize 插件重新修改用户登录案例

讲解

1. 修改代码

 

javascript

// 引入插件
<script src="./lib/form-serialize.js"></script>
// 使用 serialize 函数
const form = document.querySelector('.login-form');
const data = serialize(form, { hash: true, empty: true });
const { username, password } = data;

相关文章:

  • 九、小白如何用Pygame制作一款跑酷类游戏(添加前进小动物作为动态障碍物)
  • WebUI可视化:第2章:技术基础准备
  • 阿里云基于本地知识库构建RAG应用 | 架构与场景
  • C++入侵检测与网络攻防之网络嗅探以及ARP攻击
  • 铃木一郎女儿是奥运会选手吗·棒球1号位
  • Ethan独立开发产品日报 | 2025-04-24
  • 1、RabbitMQ的概述笔记
  • 传统中台的重生——云原生如何重塑政务系统后端架构
  • 电子级甲基氯硅烷
  • [mysql]窗口函数
  • Java安全之URLDNS链分析
  • 论文阅读:2024 ACL ArtPrompt: ASCII Art-based Jailbreak Attacks against Aligned LLMs
  • 基于线性LDA算法对鸢尾花数据集进行分类
  • 【数据可视化艺术·应用篇】三维管线分析如何重构城市“生命线“管理?
  • BongoCat - 跨平台键盘猫动画工具
  • AI数据分析的利器:解锁BI工具的无限潜力
  • 大模型微调 - transformer架构
  • 全球碳化硅晶片市场深度解析:技术迭代、产业重构与未来赛道争夺战(2025-2031)
  • Linux部署ragflow,从安装docker开始~
  • 斗鱼娱乐电玩平台源码搭建实录
  • 上海论坛2025年会聚焦创新的时代,9份复旦智库报告亮相
  • 迟来的忍者与武士:从《刺客信条:影》论多元话语的争议
  • 生于1987年,万宏宇已任内蒙古鄂温克旗委常委
  • 阿联酋启动第三届全球航空奖评选,奖金总额达百万美元
  • 本周看啥|在电影院里听民谣,听摇滚,燥起来吧
  • 国防部就美军“压力测试”大演习答澎湃:中国从来不信邪,不怕打,不怕压