AJAX原理 - XMLHttpRequest
![前端学习——ajax (Day3)_第1张图片](http://img.e-com-net.com/image/info8/2c67e0c3ee684ff989ad201eb69353d1.jpg)
使用 XMLHttpRequest
![前端学习——ajax (Day3)_第2张图片](http://img.e-com-net.com/image/info8/6ea46f090d0d4d8ab3c2761af6ecf415.jpg)
![前端学习——ajax (Day3)_第3张图片](http://img.e-com-net.com/image/info8/16fc7cc9b5f842c0931ac5ec025f0235.jpg)
DOCTYPE html>
<html lang="zh-CN">
<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>Documenttitle>
head>
<body>
<p class="my-p">p>
<script>
const xhr = new XMLHttpRequest()
xhr.open('GET','http://hmajax.itheima.net/api/province')
xhr.addEventListener('loadend',()=>{
console.log(xhr.response)
const data = JSON.parse(xhr.response)
document.querySelector('.my-p').innerHTML = data.list.join('
')
})
xhr.send()
script>
body>
html>
![前端学习——ajax (Day3)_第4张图片](http://img.e-com-net.com/image/info8/4d395f4533b942148a041342adcef77e.jpg)
![前端学习——ajax (Day3)_第5张图片](http://img.e-com-net.com/image/info8/e3271f19bec84e34922f87377e4d5ae1.jpg)
XMLHttpRequest - 查询参数
![前端学习——ajax (Day3)_第6张图片](http://img.e-com-net.com/image/info8/adf0d60802744f8cbeece57ce0d4288d.jpg)
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>XMLHttpRequest_查询参数title>
head>
<body>
<p class="city-p">p>
<script>
const xhr = new XMLHttpRequest()
xhr.open('GET','http://hmajax.itheima.net/api/city?pname=吉林省')
xhr.addEventListener('loadend',()=>{
console.log(xhr.response)
const data = JSON.parse(xhr.response)
document.querySelector('.city-p').innerHTML = data.list.join('
')
})
xhr.send()
script>
body>
html>
![前端学习——ajax (Day3)_第7张图片](http://img.e-com-net.com/image/info8/6a7189d8cb9b4ad4ac7a7b1d8657477e.jpg)
![前端学习——ajax (Day3)_第8张图片](http://img.e-com-net.com/image/info8/1543b4cbe3794209b4989afe69c8c18b.jpg)
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>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/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>
document.querySelector('.sel-btn').addEventListener('click', () => {
const pname = document.querySelector('.province').value
const cname = document.querySelector('.city').value
const qObj = {
pname,
cname
}
const paramsObj = new URLSearchParams(qObj)
const queryString = paramsObj.toString()
console.log(queryString)
const xhr = new XMLHttpRequest()
xhr.open('GET', `http://hmajax.itheima.net/api/area?${queryString}`)
xhr.addEventListener('loadend', () => {
console.log(xhr.response)
const data = JSON.parse(xhr.response)
console.log(data)
const htmlStr = data.list.map(areaName => {
return `${areaName}`
}).join('')
console.log(htmlStr)
document.querySelector('.list-group').innerHTML = htmlStr
})
xhr.send()
})
script>
body>
html>
XMLHttpRequest - 数据提交
![前端学习——ajax (Day3)_第9张图片](http://img.e-com-net.com/image/info8/f4519c7480d745b5a4ccd203b6dda262.jpg)
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>XMLHttpRequest_数据提交title>
head>
<body>
<button class="reg-btn">注册用户button>
<script>
document.querySelector('.reg-btn').addEventListener('click', () => {
const xhr = new XMLHttpRequest()
xhr.open('POST', 'http://hmajax.itheima.net/api/register')
xhr.addEventListener('loadend', () => {
console.log(xhr.response)
})
xhr.setRequestHeader('Content-Type', 'application/json')
const userObj = {
username: 'itheima007',
password: '7654321'
}
const userStr = JSON.stringify(userObj)
xhr.send(userStr)
})
script>
body>
html>
Promise
![前端学习——ajax (Day3)_第10张图片](http://img.e-com-net.com/image/info8/2ce1ef6b438a4e378ae13ffda63c8bf4.jpg)
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>认识Promisetitle>
head>
<body>
<script>
const p = new Promise((resolve, reject) => {
setTimeout(() => {
reject(new Error('模拟AJAX请求-失败结果'))
}, 2000)
})
p.then(result => {
console.log(result)
}).catch(error => {
console.log(error)
})
script>
body>
html>
Promise - 三种状态
![前端学习——ajax (Day3)_第11张图片](http://img.e-com-net.com/image/info8/d5475a64f43b49b7a883e8d01c01b337.jpg)
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>认识Promise状态title>
head>
<body>
<script>
const p = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('模拟AJAX请求-成功结果')
reject(new Error('模拟AJAX请求-失败结果'))
}, 2000)
})
console.log(p)
p.then(result => {
console.log(result)
}).catch(error => {
console.log(error)
})
script>
body>
html>