Ajax入门+aixos+HTTP协议

news2024/11/24 1:46:11

一.Ajax入门

概念:AJAX是浏览器与服务器进行数据通信的技术

axios使用:

  • 引入axios.js
  • 使用axios函数:传入配置对象,再用.then回调函数接受结果,并做后续处理
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>01.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:'https://hmajax.itheima.net/api/province'
		}).then(result=>{
			console.log(result)
			
			console.log(result.data.list)
			console.log(result.data.list.join('<br>'))
			//把准备好的省份列表,插入到页面
			document.querySelector('.my-p').innerHTML = result.data.list.join('<br>')
		})
		</script>
	</body>
</html>

二.URL

1.概念

概念:统一资源定位符,简称网址,用于访问网络上的资源

  •  http协议:超文本传输协议,规定浏览器和服务器之间传输数据的格式
  • 域名:标记服务器在互联网中方位
  • 资源路径:标记资源在服务器下的具体位置


2.URL查询参数

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


3.axios-查询参数

语法:使用axios提供的params选项

注意:axios在运行时把参数名和值,会拼接到url?参数名=值

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>03.查询参数</title>
	</head>
	<body>
		<p></p>
		<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
		<script>
			axios({
				url: 'https://hmajax.itheima.net/api/city',
				//查询参数
				params: {
					pname: '辽宁省'
				}
			}).then(result => {
				console.log(result.data.list)
				document.querySelector('p').innerHTML = result.data.list.join('<br>')
			})
		</script>
	</body>
</html>

三.案例_地区查询

<!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>04.案例_地区查询</title>
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css">
  <style>
    :root {
      font-size: 15px;
    }

    body {
      padding-top: 15px;
    }
  </style>
</head>

<body>
  <div class="container">
    <form id="editForm" class="row">
      <!-- 输入省份名字 -->
      <div class="mb-3 col">
        <label class="form-label">省份名字</label>
        <input type="text" value="北京" name="province" class="form-control province" placeholder="请输入省份名称" />
      </div>
      <!-- 输入城市名字 -->
      <div class="mb-3 col">
        <label class="form-label">城市名字</label>
        <input type="text" value="北京市" name="city" class="form-control city" placeholder="请输入城市名称" />
      </div>
    </form>
    <button type="button" class="btn btn-primary sel-btn">查询</button>
    <br><br>
    <p>地区列表: </p>
    <ul class="list-group">
      <!-- 示例地区 -->
      <li class="list-group-item">东城区</li>
    </ul>
  </div>
  <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
  <script>
    /*
      获取地区列表: http://hmajax.itheima.net/api/area
      查询参数:
        pname: 省份或直辖市名字
        cname: 城市名字
    */
   //目标:根据省份和城市名字,查询地区列表
   //1.查询按钮-点击事件
	document.querySelector('.sel-btn').addEventListener('click',() =>{
	//2.获取省份和城市名字
	let pName = document.querySelector('.province').value
	let cName = document.querySelector('.city').value
	
	//3.基于axios请求地区列表数据
	axios({
		url:'http://hmajax.itheima.net/api/area',
		params:{
			pname: pName,
			cname: cName
		}
	}).then(result =>{
		//console.log(result)
		//4.把数据转成li标签插入到页面上
		let list = result.data.list
		console.log(list)
		let theLi = list.map(areaName => `<li class="list-group-item">${areaName}</li>`).join('')
		console.log(theLi)
		document.querySelector('.list-group').innerHTML = theLi
	})
	})
  </script>
</body>

</html>

注意:let theLi = list.map(areaName => `<li class="list-group-item">${areaName}</li>`).join('')

这段代码中用的是反引号

反引号(`)是用于创建模板字符串的特殊字符


四.常用请求方法和数据提交

1.请求方法

请求方法:对服务器资源,要执行的操作

2. axios请求配置

  • url:请求的URL网址
  • method:请求的方法,GET可以省略(不区分大小写)
  • data:提交数据

3.数据提交-注册账号

需求:通过axios提交用户名和密码,完成注册功能

请求方法:POST

参数名:

username用户名(中英文和数字组成,最少8位)

password密码(最少6位)

<!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>05.常用请求方法和数据提交</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:'itheima777',
			   password:'123456'
		   }
	   }).then(result =>{
		   console.log(result)
	   })
   })
  </script>
</body>

</html>

注意:数据提交之后服务器上就已经存在了,再次运行会报错


五.axios错误处理

场景:在上面的案例中再次注册相同的账号,会遇到报错信息

处理:用更直观的方式,给普通用户展示错误信息

        注册案例,重复注册时通过弹框提示用户错误原因

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

<!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>05.常用请求方法和数据提交</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提交用户和密码, 完成注册
	  需求:使用axios错误处理语法,拿到报错信息,弹框反馈给用户
    */
   document.querySelector('.btn').addEventListener('click',() => {
	   axios({
		   url: 'http://hmajax.itheima.net/api/register',
		   //指定请求方法
		   method:'post',
		   //提交数据
		   data:{
			   username:'itheima777',
			   password:'123456'
		   }
	   }).then(result =>{
		   //成功
		   console.log(result)
	   }).catch(error =>{
		   //失败
		   //处理错误信息
		   console.log(error)
		   console.log(error.response.data.messag)
		   alert(error.response.data.message)
	   })
   })
  </script>
</body>

</html>

六.HTTP协议-请求报文

HTTP协议:规定了浏览器发送及服务器返回内容的格式

请求报文:浏览器按照HTTP协议要求的格式,发送给服务器的内容

1.请求报文的格式

请求报文的组成部分有:

  1. 请求行:请求方法,URL,协议
  2. 请求头:以键值对的格式携带的附加信息,比如:Content-Type
  3. 空行:分隔请求头,空行之后的是发送服务器的资源
  4. 请求体:发送的资源

2.请求报文-错误排查


七.HTTP协议-响应报文

响应报文:服务器按照HTTP协议要求的格式,返回给浏览器的内容

  1. 响应行(状态行):协议,HTTP响应状态码,状态信息
  2. 响应头:以键值对的格式携带的附加信息,比如: Content-Type
  3. 空行:分隔响应头,空行之后是服务器返回的资源
  4. 响应体:返回的资源

HTTP响应状态码:用来表明请求是否成功完成

比如:404(服务器找不到资源)


八.接口文档

接口文档:由后端提供的描述接口的文章

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


九.form-serialize插件

作用:快速收集表单元素的值

语法:

使用serialize函数,快速收集表单元素的值
参数1:要获取哪个表单的数据

  • 表单元素设置name属性,值会作为对象的属性名
  • 建议name属性的值,最好和接口文档参数名一致

参数2:配置对象
hash 设置获取数据结构

  • - true:JS对象(推荐)一般请求体里提交给服务器
  • - false: 查询字符串

empty 设置是否获取空值

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/872041.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【软件工程】面向对象方法-RUP

RUP&#xff08;Rational Unified Process&#xff0c;统一软件开发过程&#xff09;。 RUP特点 以用况驱动的&#xff0c;以体系结构为中心的&#xff0c;迭代增量式开发 用况驱动 用况是能够向用户提供有价值结果的系统中的一种功能用况获取的是功能需求 在系统的生存周期中…

机器学习笔记:李宏毅 stable diffusion

1 基本框架 ①&#xff1a;文字变成向量 ②&#xff1a;喂入噪声文字encoder&#xff0c;产生中间产物 ③&#xff1a;decoder 还原图片 2 text encoder 这张图越往右下表示效果越好&#xff0c;可以看到text encoder尺寸越大&#xff0c;对后续生成图片的增益越多 3 评价图…

【linux基础操作】如何一键下载 各个版本的python库文件

把需要下载的库名字&版本号&#xff0c;存在.txt文件中 2. 输入命令执行&#xff0c;下载 pip install -r your_file_name该命令的作用是从指定的文本文件中安装 Python 依赖库。 在这个命令中&#xff0c;-r 参数表示从一个文本文件&#xff08;通常以 .txt 结尾&#xf…

FastAPI入门

目录 FastAPI FastAPI 是什么 为什么要用 FastAPI FastAPI 入门 安装 用 FastAPI 写个接口 调试接口 创建快捷请求 保存为快捷请求 发送请求 总结 FastAPI FastAPI 是什么 什么是 FastAPI 呢&#xff1f; FastAPI 是 Python 的一个框架&#xff0c;如果要类比的话…

Java 的 Stream

一、创建 Stream 1.1、创建 Stream 流 1.1.1、List 集合获取 Stream 流 Collection<String> list new ArrayList<>(); Stream<String> s1 list.stream(); 1.1.2、Map 集合获取 stream 流 Map<String, Integer> map new HashMap<>(); // …

动态链接(8/13)

静态链接的缺点&#xff1a;生成的可执行文件体积较大&#xff0c;当多个程序引用相同的公共代码时&#xff0c;这些公共代码会多次加载到内存&#xff0c;浪费内存资源。 为了解决这个问题&#xff0c;动态链接对静态链接做了一些优化&#xff1a;对一些公用的代码&#xff0…

Titanic--细节记录三

目录 image sklearn模型算法选择路径图 留出法划分数据集 ‘留出’的含义 基本步骤和解释 具体例子 创造一个数据集 留出法划分 预测结果可视化 分层抽样 设置方法 划分数据集的常用方法 train_test_split 什么情况下切割数据集的时候不用进行随机选取 逻辑回归…

Linux系统下安装Git软件

环境说明 Linux系统&#xff1a;CentOS 7.9 安装GCC等 JDK版本&#xff1a;jdk-8u202-linux-x64.tar.gz Maven版本&#xff1a;apache-maven-3.8.8-bin.tar.gz 在以上环境下安装Git&#xff08;git-2.41.0.tar.gz&#xff09;软件。 查看是否安装Git软件 查看Git版本&#…

python代码一行过长怎么办,python中一行代码太长

这篇文章主要介绍了python每行代码长度不能超过100个字符&#xff0c;具有一定借鉴价值&#xff0c;需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获&#xff0c;下面让小编带着大家一起了解一下。 30行python代码实现豆瓣电影排行爬取 实现过程完整代码 今天我们想实…

四、Linux常用命令(一)

1、ls命令 (1)ls: list&#xff0c;列表。 (2)作用&#xff1a;使用列表把当前文件夹下所有文件显示出来。 (3)ls -a: 显示所有文件&#xff0c;包括隐藏文件。 (3)ls -l: 显示文件的详细信息。 (3)显示所有文件且显示详细信息&#xff0c;以下四种方式都可以。 ls -a -l…

腾讯云2核2g轻量应用服务器能容纳多少人?

腾讯云轻量应用服务器2核2g能容纳多少人&#xff1f;轻量应用服务器2核2g配置自带4M公网带宽&#xff0c;以网站应用为例&#xff0c;假设优化后的网页平均大小为60KB&#xff0c;2核2G4M带宽轻量服务器可以支持10个并发数&#xff0c;即同时10个人在1秒内同时打开网站&#xf…

Visual Studio 2019 解决scanf函数报错问题

前言 Visual Studio 2019 解决scanf函数报错问题 博主博客链接&#xff1a;https://blog.csdn.net/m0_74014525 关注博主&#xff0c;后期持续更新系列文章 *****感谢观看&#xff0c;希望对你有所帮助***** 系列文章 第一篇&#xff1a;Visual Studio 2019 详细安装教程&…

软工导论知识框架(八)面向对象设计风格

一.面向对象实现 把面向对象设计结果翻译成面向对象程序测试并调试面向对象的程序 二.程序设计语言 所有语言都可完成面向对象实现&#xff0c;但效果不同。 使用非面向对象语言编写面向对象程序&#xff0c;则必须由程序员自己把面向对象概念映射到目标程序中。 1.将来能够占…

Flutter源码分析笔记:Widget类源码分析

Flutter源码分析笔记 Widget类源码分析 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at: https://jclee95.blog.csdn.netEmail: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/qq_28550263/article/details/132259681 【介绍】&#x…

JZ37序列化二叉树

题目地址&#xff1a;序列化二叉树_牛客题霸_牛客网 题目回顾&#xff1a; 解题思路&#xff1a; 首先&#xff0c;序列化就是将二叉树的节点值放入一个字符串中&#xff0c;这里可以按照前序遍历的思路来进行操作&#xff0c;谦虚遍历是&#xff1a;根左右的情况&#xff0c;…

Java 集合详解

目录 1.集合体系结构 2.Collection集合 2.1 Collection集合 2.1.1 Collection基本方法 2.1.2 Collection遍历方式 2.1.2.1 迭代器遍历 2.1.2.2 增强for循环 2.1.2.3 Lambda表达式 3.List集合 3.1 List集合的基本方法 3.2 List集合的遍历方式 4.数据结构 4.1 数据结…

设计模式之七:适配器模式与外观模式

面向对象适配器将一个接口转换成另一个接口&#xff0c;以符合客户的期望。 // 用火鸡来冒充一下鸭子class Duck { public:virtual void quack() 0;virtual void fly() 0; };class Turkey { public:virtual void gobble() 0;virtual void fly() 0; };class TurkeyAdapter :…

52.Linux学习day02 基础命令详解2

目录 Linux常见的基础命令 1.cp 2.mv 3.rm 4.find 5.grep 6.管道 | 7.wc 8.su 9.关机与重启 10.runleve Linux常见的基础命令 1.cp 用于复制文件或目录 使用 cp 命令的基本格式如下&#xff1a; cp [选项] 源文件 目标文件或目录选项&#xff1a;cp 命令支持一些选…

Django模板

文章目录 模板Template实践 模板Template 在Django框架中&#xff0c;模板是可以帮助开发者快速生成呈现给用户页面的工具 模板的设计方式实现了我们MVT中VT的解耦(M: Model&#xff0c;V:View&#xff0c;T:Template)&#xff0c;VT有着N:M的关系&#xff0c;一个V可以调用任…

接口自动化测试-Requests模块实战详解,一篇打通...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 什么是requests&a…