发表于: 2023-04-23 19:24:12
0 227
AXJX知识点:
<!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>ie 请求</title>
<style>
#result{
width: 200px;
height: 100px;
border: solid 1px skyblue;
}
</style>
</head>
<body>
<button>点击发送请求</button>
<div id="result"></div>
<script>
//获取元素
const btn = document.querySelector('button')
const result = document.querySelector('#result')
btn.addEventListener('click', function() {
// console.log('点击了');
// 1、创建对象
const xhr = new XMLHttpRequest()
// 2、初始化 设置请求方法和 url
xhr.open('GET', 'http://127.0.0.1:8000/ie' + Date.new())
// 3、发送
xhr.send()
// 4、事件绑定 处理服务端返回的结果
//on 当 ....时候
// readystate 是 xhr 对象中的属性 表示状态 0 1 2 3 4
// change 改变
xhr.onreadystatechange = function() {
//判断(服务器返回了所有的结果)
//readyState 属性返回一个 XMLHttpRequest 代理当前所处的状态
if(xhr.readyState === 4) {
//判断响应状态码 200 404 403 401 500
// 2xx 2开头的 算是响应成功
if(xhr.status >= 200 && xhr.status < 300) {
// 处理结果 行 头 空行 体
// 1、响应行
// console.log(xhr.status) //状态码
// console.log(xhr.statusText) //状态字符串
// console.log(xhr.getAllResponseHeaders()) //所有响应头
// console.log(xhr.response) //响应体
//设置 result 的文本 Response 接口呈现了对一次请求的响应数据。
result.innerHTML = xhr.response
} else {
}
}
}
})
</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>ie 请求</title>
<style>
#result{
width: 200px;
height: 100px;
border: solid 1px skyblue;
}
</style>
</head>
<body>
<button>点击发送请求</button>
<div id="result"></div>
<script>
//获取元素
const btn = document.querySelector('button')
const result = document.querySelector('#result')
btn.addEventListener('click', function() {
// console.log('点击了');
// 1、创建对象
const xhr = new XMLHttpRequest()
//超时设置 超时2s就取消
xhr.timeout = 2000
//超时回调
xhr.ontimeout = function() {
alert('网络异常,请稍后重试!')
}
//网络异常回调
xhr.onerror = function() {
alert('你的网络似乎出了一些问题!')
}
// 2、初始化 设置请求方法和 url
xhr.open('GET', 'http://127.0.0.1:8000/delay')
// 3、发送
xhr.send()
// 4、事件绑定 处理服务端返回的结果
//on 当 ....时候
// readystate 是 xhr 对象中的属性 表示状态 0 1 2 3 4
// change 改变
xhr.onreadystatechange = function() {
//判断(服务器返回了所有的结果)
//readyState 属性返回一个 XMLHttpRequest 代理当前所处的状态
if(xhr.readyState === 4) {
//判断响应状态码 200 404 403 401 500
// 2xx 2开头的 算是响应成功
if(xhr.status >= 200 && xhr.status < 300) {
// 处理结果 行 头 空行 体
// 1、响应行
//设置 result 的文本 Response 接口呈现了对一次请求的响应数据。
result.innerHTML = xhr.response
} else {
}
}
}
})
</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>ie 请求</title>
<style>
#result{
width: 200px;
height: 100px;
border: solid 1px skyblue;
}
</style>
</head>
<body>
<button>点击发送请求</button>
<script>
//获取元素
const btn = document.querySelector('button')
let x = null
let isSending = false // 判断是否正在发送 AJAX请求
btn.addEventListener('click', function() {
//修改 标识变量的值
// 如果该请求已被发出,XMLHttpRequest.abort() 方法将终止该请求。
if(isSending) x.abort()
x = new XMLHttpRequest()
// 修改 标识变量的值
isSending = true
x.open('GET', 'http://127.0.0.1:8000/delay')
// 发送
x.send()
// 事件绑定 处理服务端返回的结果
x.onreadystatechange = function() {
if(xhr.readyState === 4) {
//修改标识变量
isSending = false
}
}
})
</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>Axios 发送 AJAX请求</title>
<script crossorigin="anonymous" src="https://cdn.bootcdn.net/ajax/libs/axios/0.19.2/axios.js"></script>
<style>
#result{
width: 200px;
height: 100px;
border: solid 1px skyblue;
}
</style>
</head>
<body>
<button>GET</button>
<button>POST</button>
<button>AJAX</button>
<script>
//获取元素
const btns = document.querySelectorAll('button')
// 配置 baseURL
axios.defaults.baseURL = 'http://127.0.0.1:8000'
btns[0].addEventListener('click', function() {
//GET请求
axios.get('/axios-server', {
//url 参数
params: {
id:100,
vip:7
},
//请求头信息
headers: {
name: 'aitguigu',
age: 20
}
}).then(value => {
console.log(value);
})
})
btns[1].addEventListener('click', function() {
//POST请求
axios.post('/axios-server', {
//请求体
username: 'admin',
password: 'admin123'
},{
//url 参数
params: {
id:200,
vip:9
},
//请求头信息
headers: {
height: 180,
weight: 180
}
})
})
btns[2].addEventListener('click', function() {
axios({
//请求方法
method: 'POST',
//url
url: '/axios-server',
//url参数
params: {
vip: 10,
level: 30
},
//头信息
headers: {
a: 100,
b: 200
},
//请求体参数
data: {
username: 'admin',
password: 'admin123'
}
}).then(response => {
console.log(response);
//响应状态码
console.log(response.status);
//响应状态字符串
console.log(response.statusText);
//响应状态头信息
console.log(response.headers);
//响应体
console.log(response.data);
})
})
</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>检测用户是否存在案例</title>
</head>
<body>
用户名:<input type="text" id="username">
<p></p>
<script>
//获取 input 元素
const input = document.querySelector('input')
const p = document.querySelector('p')
//声明 handle 函数
function handle(data) {
input.style.border = 'solid 1px #f00'
// 修改提示文本
p.innerHTML = data.msg
}
//绑定事件
input.addEventListener('blur', function() {
//获取用户的输入值
let username = this.value
//向服务器端发送请求 检测用户名是否存在
//1.创建 script 标签
//Document.createElement() 方法用于创建一个由标签名称 tagName 指定的 HTML 元素
const script = document.createElement('script')
//2.设置标签的 src 属性
script.src ="http://127.0.0.1:8000/check-username"
//3.将 script 插入到文档中
document.body.appendChild(script)
})
</script>
</body>
</html>
评论