Ajax_原生

目录

一.什么是ajax?

概念:

特点:

 使用场景:

二.axios.js?

什么是axios:

axios的使用

三.Ajax如何原生JS实现?

语法:

步骤分析:

示例1-GET请求无参数:

示例2-GET请求有参数:

示例3-POST请求有参数:

三.原生query传参


一.什么是ajax?

概念:

Ajax[ˈeɪdʒæks], 是一种在JS代码中发请求并获取响应数据的技术.

特点:

是一种不刷新技术.怎么理解?不刷新页面的情况,从服务器获取数据,以更新页面

 使用场景:

  1. 比如验证手机号是否在服务器已经注册过了
  2. 根据输入的搜索关键字, 联想菜单提示数据切换

  3. 根据增和删除, 修改页面数据

二.axios.js?

什么是axios:

axios是别人封装好的,用来发ajax请求的工具

axios的使用

  1. 先引入axios.js文件到自己的网页中
    1. axios.js文件链接: https://cdn.jsdelivr.net/npm/axios@0.27.2/dist/axios.min.js
  2. axios的使用语法
axios({
    url: '请求的URL网址',
    method: '请求的方法'
}).then((结果变量名) => {
    // .then 用来指定请求成功之后的回调函数
    // 形参中的 result 是请求成功之后的结果
})

Ajax是一个技术的名称, 而以前我们具体使用的是axios.js插件来发送请求 ,但是其实axios.js也是一个库, 内部是原生JS代码, 实际它是对原生的代码进行了封装,那axios的底层原理到底怎样呢?

三.Ajax如何原生JS实现?

Ajax如果用原生JS实现, 需要使用window提供的一个构造函数, 叫XMLHttpRequest

语法:

// 1. 创建一个xhr对象
let xhr = new XMLHttpRequest()

// 2. 设置请求方式和请求地址
xhr.open(请求方式, 请求地址)

// 3. 发送请求
xhr.send()

// 4. 监听load(请求成功)事件 ==> 可以获取响应数据
xhr.addEventListener('load', function() {
   console.log(xhr.response)  // 服务器返回的数据
})

步骤分析:

 

示例1-GET请求无参数:

<!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>Document</title>
		<link rel="stylesheet" href="./lib/bootstrap-v4.6.0.css" />
	</head>
	<body>
		<button id="btn" class="btn btn-primary btn-sm">发送get请求</button>
		<script>
			/* 
			原生ajax发送get请求语法:
			1. new xhr 对象
			2. 开一个请求,调用无参数:xhr.open('请求方式', 请求的url地址)  有参数:xhr.open('请求方式', 请求的url地址?参数名1=值1&参数名2=值2)  
			3. 发送 ajax 请求 xhr.send()
			4.监听load 事件   获取服务器响应回来的数据      
      */

			document.querySelector('#btn').addEventListener('click', function () {
				// 1. new xhr 对象
				const xhr = new XMLHttpRequest()
				// 2. 开一个请求,调用 xhr.open('请求方式', 请求的url地址)  请求的url地址?参数名=值
				xhr.open('get', 'url地址')
				//3. 发送 ajax 请求 xhr.send()
				xhr.send()
				// 4. 获取服务器响应回来的数据  load 事件
				xhr.addEventListener('load', function () {
					// 获取到服务器响应回来的数据 xhr.response 服务器响应回来的数据 是 json 字符串 ----> js对象 JSON.parse()
					console.log(JSON.parse(xhr.response))
				})
			})
		</script>
	</body>
</html>

示例2-GET请求有参数:

<!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>Document</title>
		<link rel="stylesheet" href="./lib/bootstrap-v4.6.0.css" />
	</head>
	<body>
		<button id="btn" class="btn btn-primary btn-sm">发送get请求</button>
		<script>
			// 1. 获取到 btn
			document.querySelector('#btn').addEventListener('click', function () {
				// 2. 创建 xhr 对象
				const xhr = new XMLHttpRequest()
				// 3. 调用 xhr.open('请求方式', 请求的url地址)  请求的url地址?参数名=值
				// xhr.open('get', 'url地址')
				xhr.open('get', 'url地址?pname= 参数')
				// 4. 发送 ajax 请求 xhr.send()
				xhr.send()
				// 5. 获取服务器响应回来的数据  load 事件
				xhr.addEventListener('load', function () {
					// 获取到服务器响应回来的数据 xhr.response 服务器响应回来的数据 是 json 字符串 ----> js对象 JSON.parse()
					console.log(JSON.parse(xhr.response))
				})
			})
		</script>
	</body>
</html>

示例3-POST请求有参数:

<!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>Document</title>
	</head>
	<body>
		<button id="btn">发送post请求</button>
		<script>

			document.querySelector('#btn').addEventListener('click', function () {
				const xhr = new XMLHttpRequest()
				xhr.open('post', 'http://ajax-api.itheima.net/api/books')
				/*
        key键 content-type 文档类型
        value值  
          1. application/x-www-form-urlencoded 普通字符串
          2. application/json  json字符串形式,
          3. multipart/form-data form-data  对象
      */

				xhr.setRequestHeader('content-type', 'application/json')

				const data = {
					bookname: 'js从入门到精通',
					author: '老王同学',
					publisher: '隔壁老王',
				}
				// 因为请求体是application/json,所以转化为json字符串
				xhr.send(JSON.stringify(data))

				xhr.addEventListener('load', function () {
					console.log(JSON.parse(xhr.response))
				})
			})
		</script>
	</body>
</html>

三.原生query传参

原生Ajax如何传递查询参数?  在url?后面拼接查询参数

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值