📅  最后修改于: 2023-12-03 15:24:14.157000             🧑  作者: Mango
在前端开发中,我们经常需要使用 AJAX 发送数据到后端。其中一种常用的数据格式是 JSON。
那么在 JavaScript 中如何使用 POST 发送 JSON 呢?接下来我们将介绍详细的步骤和示例代码。
发送 POST 请求通常需要使用 XMLHttpRequest(简称XHR)对象。该对象提供了一种在不刷新页面的情况下从服务器获取数据的方法。
以下是一个使用 XHR 对象发送 POST 请求并接收 JSON 返回值的示例代码:
const xhr = new XMLHttpRequest();
const url = "/api/user";
xhr.open("POST", url, true);
xhr.setRequestHeader("Content-Type", "application/json");
xhr.onreadystatechange = function() {
if (xhr.readyState === XMLHttpRequest.DONE) {
if (xhr.status === 200) {
const response = JSON.parse(xhr.responseText);
console.log("response", response);
} else {
console.error("Error: ", xhr.status);
}
}
};
const data = {
username: "john.doe",
password: "123456"
};
xhr.send(JSON.stringify(data));
解释:
open()
方法初始化请求参数。第一个参数是请求的方法("POST" 或 "GET" 等),第二个参数是 API 的 URL,第三个参数是一个布尔值,代表请求是否异步处理。setRequestHeader()
方法来告诉服务器发送的数据是 JSON 类型。onreadystatechange()
事件处理程序中,检查 XHR 对象的 readyState
和 status
属性来判断请求是否成功。JSON.stringify()
方法将数据转换为 JSON 字符串,并通过 send()
方法发送到服务器。另一种发送 POST 请求的方法是使用 Fetch API。该 API 提供了一种更现代化、更简单的方式来处理 AJAX 请求。
以下是一个使用 Fetch API 发送 POST 请求并接收 JSON 返回值的示例代码:
const url = "/api/user";
const data = {
username: "john.doe",
password: "123456"
};
const options = {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify(data)
};
fetch(url, options)
.then(response => response.json())
.then(data => console.log("data", data))
.catch(error => console.error("Error: ", error));
解释:
options
对象,该对象包含请求的方法、请求头和请求体。fetch()
方法发送请求并传递 options
对象。.then()
方法中,使用 json()
方法解析服务器响应的 JSON 数据。.catch()
方法来处理请求出错的情况。以上就是在 JavaScript 中发送 POST 请求并接收 JSON 返回值的两种常用方法。无论使用哪种方式,您都需要对服务器设置正确的响应头(Content-Type: application/json
),以便正确解析请求体中的 JSON 数据。
Happy coding! 🎉