一、AJAX原理-XMLHttpRequest
(1)定义及原理
定义:XmlHttp是一套可以在Javascript、VbScript、Jscript等脚本语言中通过http协议传送或从接收XML及其他数据的一套API。XmlHttp最大的用处是可以更新网页的部分内容而不需要刷新整个页面。
AJAX的原理也就是XMLHttpRequest对象(下文简称XHR)
注意:axios不等于XMLHttpRequest
关系:axios内部采用XMLHttpRequest与服务器交互
(2)使用XHR的原因
有更多与服务器数据通信方式
了解axios内部原理
(3)使用XHR
步骤:
创建XMLHttpRequest对象
配置请求方法和请求URL地址
监听Loadend事件,接收响应结果
发起请求
代码示例如下:
XMLHttpRequest_基础使用
//
/**
* 目标:使用XMLHttpRequest对象与服务器通信
* 1. 创建 XMLHttpRequest 对象
* 2. 配置请求方法和请求 url 地址
* 3. 监听 loadend 事件,接收响应结果
* 4. 发起请求
*/
//1. 创建 XMLHttpRequest 对象
const xhr = new XMLHttpRequest()
//2. 配置请求方法和请求 url 地址
xhr.open('GET', 'https://hmajax.itheima.net/api/province')
//3. 监听 loadend 事件,接收响应结果
xhr.addEventListener('loadend', () => {
console.log(xhr.response)
const data = JSON.parse(xhr.response)
console.log(data)
cons服务器托管网ole.log(data.list.join('
'))
document.querySelector('.my-p').innerHTML = data.list.join('
')
})
xhr.send()
二、XMLHttpRequest-查询参数
(1)定义及语法
定义:浏览器提供给服务器的额外信息,让服务器返回浏览器想要的数据
语法:http://xxxx服务器托管网.com/xxx/xxx?参数名1=值1&参数名2=值2(UR+?+参数名=值)
注意:参数名1=值1&参数名2=值2 参数之间需要&连接
代码示例如下
XMLHttpRequest_查询参数
/**
* 目标:使用XHR携带查询参数,展示某个省下属的城市列表
*/
//创建XMLHttpRequest对象
const xhr = new XMLHttpRequest()
//配置请求方法和请求URL地址
xhr.open('GET', 'https://hmajax.itheima.net/api/city?pname=辽宁省')
//监听Loadend事件,接收响应结果
xhr.addEventListener('loadend', () => {
console.log(xhr.response)
})
//发起请求
xhr.send()
(2)URLSearchParams对象的使用
在参数名较多的情况下,使用http://xxxx.com/xxx/xxx?参数名1=值1&参数名2=值2比较麻烦并且容易出错,这时候就需要URLSearchParams对象帮忙了
使用方法如下
const paramsObj = new URLSearchParams({
参数名1:值1,
参数名2:值2
})
//2生成指定格式查询参数 字符串
const querString = paramsObj.toString()
//结果 参数名1=值1&参数名2=值2
示例代码如下
案例_地区查询
:root {
font-size: 15px;
}
body {
padding-top: 15px;
}
地区列表:
- 东城区
/**
* 目标: 根据省份和城市名字, 查询对应的地区列表
*/
//1创建 URLSearchParams对象
// const paramsObj = new URLSearchParams({
// 参数名1:值1,
// 参数名2:值2
// })
// //2生成指定格式查询参数 字符串
// const querString = paramsObj.toString()
// //结果 参数名1=值1&参数名2=值2
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 querString = paramsObj.toString()
console.log(querString)
})
打印结果说明我们是成功的了,然后就可以使用XHR对象来进行操作了
三、XMLHttpRequest-数据提交
我们用一张图来概括XMLHttpRequest数据提交的使用方法
请求行:请求方法,URL,协议
请求头:以键值对的格式携带的附加信息,比如:Content-Type
空行:分隔请求头,空行之后的是发送给服务器的资源
请求体:发送的资源
示例代码如下
XMLHttpRequest_数据提交
/**
* 目标:使用xhr进行数据提交-完成注册功能
*/
document.querySelector('.reg-btn').addEventListener('click', () => {
//1创建 URLSearchParams对象
const xhr = new XMLHttpRequest()
//2. 配置请求方法和请求 url 地址
xhr.open('POST','https://hmajax.itheima.net/api/register')
//3. 监听 loadend 事件,接收响应结果
xhr.addEventListener('loadend',()=>{
console.log(xhr.response)
})
//设置请求头,告诉服务器内容类型(JSON字符串)
xhr.setRequestHeader('Content-Type','application/json')
//准备提交数据
const userObj = {
username:'Orange',
password:'1234567'
}
const userStr = JSON.stringify(userObj)
//设置请求体,发起请求
xhr.send(userStr)
})
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net 机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net相关推荐: 容器数据卷1什么是容器数…