[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#前端异步请求
 
                         
                                

