[TOC]
基础知识
houdunren.com (opens new window)@ 向军大叔
浏览器天生具发送HTTP请求的能力,比如在在址栏输入内容,提交FORM表单等。本章来学习通过JS程序来管理HTTP请求的能力。
使用JS脚本发送HTTP请求,不会带来页面的刷新,所以用户体验非常好。
#XMLHttpRequest
使用XMLHttpRequest发送请求,是一种存在很久的方案。现代浏览器支持使用fetch的异步请求方式,fetch基于promise异步操作体验更好。
#基本使用
使用XMLHttpRequest 发送请求需要执行以下几步
- 使用 new XMLHttpRequest创建xhr对象
- xhr.open 初始化请求参数
- xhr.send 发送网络请求
- xhr.onload 监听请求结果
- xhr.onerror 请求中断等错误发生时的处理
#响应类型
通过设置 xhr.responseType 对响应结果进行声明,来对结果自动进行处理。
下面是可以使用的响应类型
类型 | 说明 |
---|---|
text | 响应结果为文本 |
json | 响应内容为JSON,系统会自动将结果转为JSON对象 |
blob | 二进制数据响应 |
document | XML DOCUMENT 内容 |
#响应结果
xhr.onload 用于处理响应完毕后的处理
使用以下属性来处理结果
- xhr.status 为HTTP状态码 如 404/422/403等,当为200时为正确响应
- xhr.statusText HTTP状态码内容,200时为ok,404 为Not Found
- xhr.response 服务器端响应的内容
#使用示例
const xhr = new XMLHttpRequest()
xhr.timeout = 5000
xhr.open(‘GET’, ‘hd.php’)
xhr.send()
xhr.onload = function () {
if (xhr.status == 200) {
console.log(xhr.response)
} else {
console.log(${xhr.status}:${xhr.statusText}
)
}
}
xhr.onerror = function (error) {
console.log(error)
}#发送表单
下面来使用XMLHttpRequest发送POST请求#后台服务
下面创建hd.php后台脚本(你可以使用你喜欢的后台脚本进行测试)
<?php
echo $_POST[‘title’];
然后启动服务器
php -S localhost:8000
现在可以在浏览器中访问 http://localhsot:8080/hd.php 请求hd.php#前端异步请求