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

Ajax从零到实战

  💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。



非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨
 

前言

本栏目是根据黑马程序员的网课来整理的笔记,也会结合我的一些个人见解,来记录自己学习Ajax的过程,俗话说,好记性不如烂笔头,小郑喜欢在学习的过程中记笔记,记下自己在学习过程中难以理解的知识点,反复练习,加深印象,小郑打算在这个暑假的第一个月学习完Ajax从0到1实现项目,希望广大网友一起监督学习,互相进步!

目录

什么是 AJAX ?

引入 axios.js 文件到自己的网页中

URL 查询参数

1. 查询参数的语法 

2. axios 如何携带查询参数?

查询地区列表案例

axios错误处理

请求报文--错误排查

form-serialize 插件


什么是 AJAX ?

  • 使用浏览器的 XMLHttpRequest 对象 与服务器通信

  • 浏览器网页中,使用 AJAX技术(XHR对象)发起获取省份列表数据的请求,服务器代码响应准备好的省份列表数据给前端,前端拿到数据数组以后,展示到网页

引入 axios.js 文件到自己的网页中

axios.js文件链接:https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js

axios函数的使用语法

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

URL 查询参数

1. 查询参数的语法 

  • 在 url 网址后面用?拼接格式:XXXX?参数名1=值1&参数名2=值2

  • 参数名一般是后端规定的,值前端看情况传递即可

2. axios 如何携带查询参数?

查询城市列表的 url地址:http://hmajax.itheima.net/api/city

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

查询地区列表案例

查询地区: http://hmajax.itheima.net/api/area

/*获取地区列表: http://hmajax.itheima.net/api/area查询参数:pname: 省份或直辖市名字cname: 城市名字*/
// 目标: 根据省份和城市名字, 查询地区列表
// 1. 查询按钮-点击事件
document.querySelector('.sel-btn').addEventListener('click', () => {// 2. 获取省份和城市名字let pname = document.querySelector('.province').valuelet cname = document.querySelector('.city').value// 3. 基于axios请求地区列表数据axios({url: 'http://hmajax.itheima.net/api/area',params: {pname,cname}}).then(result => {// console.log(result)// 4. 把数据转li标签插入到页面上let list = result.data.listconsole.log(list)let theLi = list.map(areaName => `<li class="list-group-item">${areaName}</li>`).join('')console.log(theLi)document.querySelector('.list-group').innerHTML = theLi})
})

axios错误处理

当用户已经注册过,再次点击注册按钮的时候,就会报错,那么我们要怎么处理呢?

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>常用请求方法和数据提交</title>
</head><body><button class="btn">注册用户</button><script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script><script>/*注册用户:http://hmajax.itheima.net/api/register请求方法:POST参数名:username:用户名(中英文和数字组成,最少8位)password:密码  (最少6位)目标:点击按钮,通过axios提交用户和密码,完成注册*/document.querySelector('.btn').addEventListener('click', () => {axios({url: 'http://hmajax.itheima.net/api/register',method: 'POST',data: {username: '大学生小郑123',password: '7654321'}}).then(result => {console.log(result)}).catch(error => {console.log(error.response.data.message)alert(error.response.data.message)})})</script>
</body></html>

请求报文--错误排查

当我点击登录的时候,发现密码错误,那么我们要怎么排查错误呢?

流程:

1.确认信息是否在请求报文正确携带

2.发现密码错误 返回到代码查看

form-serialize 插件

       使用serialize函数,快速收集表单元素的值

       * 参数1:要获取哪个表单的数据

       *  表单元素设置name属性,值会作为对象的属性名

       *  建议name属性的值,最好和接口文档参数名一致

       * 参数2:配置对象

       *  hash 设置获取数据结构

       *    - true:JS对象(推荐)一般请求体里提交给服务器

       *    - false: 查询字符串

       *  empty 设置是否获取空值

       *    - true: 获取空值(推荐)数据结构和标签结构一致

       *    - false:不获取空值

      

<script src="./lib/form-serialize.js"></script><script>document.querySelector('.btn').addEventListener('click', () => {const form = document.querySelector('.example-form')const data = serialize(form, { hash: true, empty: true })// const data = serialize(form, { hash: false, empty: true })// const data = serialize(form, { hash: true, empty: false })console.log(data)})</script>

❤️❤️❤️小郑是普通学生水平,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Log4j的原理及应用详解(三)
  • 在GPU上运行PyTorch
  • MVC之 IHttpModule管道模型《二》
  • C++的关键字const
  • 飞睿智能UWB Tag蓝牙防丢器标签,宠物安全新升级,5cm精准定位测距不迷路
  • 杭州汽修元宇宙
  • 芋道项目发版后报错: jt is not a function...
  • VBA学习(20):一批简单的Excel VBA编程问题解答
  • 持续集成06--Jenkins构建触发器
  • 集线器、交换机、路由器的区别,冲突域、广播域
  • 【RabbitMQ】一文详解消息可靠性
  • 基于springboot和mybatis的RealWorld后端项目实战三之添加swagger
  • HarmonyOS NEXT学习——@BuilderParam装饰器
  • golang mux组件兼容转移url
  • 【Linux】安装PHP扩展-redis
  • AngularJS指令开发(1)——参数详解
  • codis proxy处理流程
  • Java反射-动态类加载和重新加载
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • Meteor的表单提交:Form
  • Redis中的lru算法实现
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • 闭包,sync使用细节
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 人脸识别最新开发经验demo
  • ​​​​​​​开发面试“八股文”:助力还是阻力?
  • ​水经微图Web1.5.0版即将上线
  • #Java第九次作业--输入输出流和文件操作
  • #mysql 8.0 踩坑日记
  • ${ }的特别功能
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (AngularJS)Angular 控制器之间通信初探
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (二)linux使用docker容器运行mysql
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (汇总)os模块以及shutil模块对文件的操作
  • (每日一问)基础知识:堆与栈的区别
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • .Net IOC框架入门之一 Unity
  • .NET 动态调用WebService + WSE + UsernameToken
  • .NET连接数据库方式
  • .NET下的多线程编程—1-线程机制概述
  • .NET运行机制
  • /dev/sda2 is mounted; will not make a filesystem here!
  • ??javascript里的变量问题
  • @EnableWebSecurity 注解的用途及适用场景
  • @FeignClient 调用另一个服务的test环境,实际上却调用了另一个环境testone的接口,这其中牵扯到k8s容器外容器内的问题,注册到eureka上的是容器外的旧版本...
  • @ResponseBody
  • [ vulhub漏洞复现篇 ] AppWeb认证绕过漏洞(CVE-2018-8715)
  • [ vulhub漏洞复现篇 ] JBOSS AS 5.x/6.x反序列化远程代码执行漏洞CVE-2017-12149
  • [ 网络基础篇 ] MAP 迈普交换机常用命令详解
  • [100天算法】-x 的平方根(day 61)