📅  最后修改于: 2023-12-03 15:38:49.719000             🧑  作者: Mango
在进行 AJAX 请求时,我们经常需要检查是否成功接收并处理了 JSON 格式的响应数据。这里提供一些在 Javascript 中检查 AJAX 响应中 JSON 数据的方法。
在 AJAX 请求中,我们使用 XMLHttpRequest 对象来发送请求和处理响应数据。我们可以使用 readyState 属性来检查响应的状态,使用 status 属性来检查 HTTP 响应状态码。为了确保我们收到的是 JSON 格式的响应数据,我们还需要检查响应类型 (responseType) 是否设置为 "json"。
const xhr = new XMLHttpRequest();
xhr.open('GET', 'url_to_json_data');
xhr.onload = function() {
if (this.readyState === 4 && this.status === 200) {
const responseData = this.response;
// 检查响应类型
if (this.getResponseHeader('content-type').indexOf('application/json') !== -1) {
console.log(responseData);
} else {
console.log('响应类型不是 JSON');
}
}
};
xhr.responseType = 'json';
xhr.send();
Fetch 是 ES6 中引入的新的 AJAX API。相比 XMLHttpRequest,它更加简单、易用,且支持 Promise。在 Fetch 中,我们可以使用 response.json() 方法来将响应数据转为 JSON 对象。
fetch('url_to_json_data')
.then(response => {
// 检查响应类型
if (response.headers.get('content-type').indexOf('application/json') !== -1) {
return response.json();
} else {
throw new TypeError('响应类型不是 JSON');
}
})
.then(json => {
console.log(json);
})
.catch(error => {
console.error(error);
});
axios 是一款基于 Promise 的 HTTP 库,也是一个相对比较流行的 AJAX 库。在 axios 中,我们可以使用 response.data 来获取响应数据。
axios.get('url_to_json_data')
.then(response => {
// 检查响应类型
if (response.headers['content-type'].indexOf('application/json') !== -1) {
console.log(response.data);
} else {
console.log('响应类型不是 JSON');
}
})
.catch(error => {
console.error(error);
});
这里给出了三种方法来检查 AJAX 响应中的 JSON 数据。以上方法都可以根据实际场景选择使用。