XMLHttpRequest GET 请求需创建实例、open 配置、send 发送,并监听 readyState === 4 和 status 在 200–299 或 304 范围;设 responseType = 'json' 可直接取 xhr.response,否则用 JSON.parse(xhr.responseText)。

用 XMLHttpRequest 发起一个基本的 GET 请求,核心是创建实例、配置请求、发送并监听响应。关键在于状态判断和错误处理,不能只看 status === 200,还要检查 readyState === 4。
创建并配置请求
先用 new XMLHttpRequest() 创建对象,再调用 open() 方法设置请求方式、URL 和是否异步(通常为 true):
-
open('GET', '/api/data', true)—— 第三个参数省略也默认为true - URL 可以是相对路径或完整地址;若需传参,直接拼在 URL 后,如
'/api/user?id=123' - 不需要手动设置
Content-Type,GET 请求不带请求体
监听响应状态
通过监听 onreadystatechange 或更推荐的 addEventListener('load', ...) 和 addEventListener('error', ...) 来处理结果:
-
readyState === 4表示请求完成(无论成功或失败) -
status在 200–299 或 304 范围内才算成功(比如 304 表示缓存有效) - 建议同时检查
statusText和响应体内容,避免服务端返回 200 但实际出错的情况
发送请求并获取数据
调用 send() 方法(GET 请求无需参数);响应数据通过 responseText(字符串)或 response(自动解析为 JSON,需提前设 responseType = 'json')获取:
立即学习“Java免费学习笔记(深入)”;
- 如果后端返回 JSON,设
xhr.responseType = 'json'后,xhr.response就是解析好的对象,无需JSON.parse() - 若没设
responseType,就用xhr.responseText,再手动JSON.parse()(注意捕获解析异常) - 响应头可通过
getResponseHeader()或getAllResponseHeaders()获取
简单可运行示例
以下是一个完整、带基础错误处理的 GET 请求片段:
const xhr = new XMLHttpRequest();
xhr.open('GET', '/api/hello');
xhr.responseType = 'json';
xhr.onload = function() {
if (xhr.status >= 200 && xhr.status < 300) {
console.log('成功:', xhr.response);
} else {
console.error('请求失败:', xhr.status, xhr.statusText);
}
};
xhr.onerror = function() {
console.error('网络错误');
};
xhr.send();


















