javascript - 获取中的状态 201
问题描述
我有下面的 JS 代码,即返回状态 201,
我正在与本地服务器一起工作,一旦我在迅雷客户端检查它就可以正常工作,如下所示:
我的代码是:
async function send(params) {
var path = document.querySelector('#path');
var skills = document.querySelector('#skills');
var skillsList = skills.value
skillsList = skillsList.replace(/\n\r?/g, '|');
const dataToSend = JSON.stringify({"path": path.value, "skills": skillsList});
console.log(dataToSend);
let dataReceived = "";
fetch("http://localhost:3000/getSkills", {
credentials: "same-origin",
mode: "cors",
method: "post",
headers: { "Content-Type": "application/json" },
body: dataToSend
}).then(resp => {
if (resp.status === 200) {
return resp.json();
} else {
console.log("Status: " + resp.status)
return Promise.reject("server")
}
}).then(dataJson => {
dataReceived = JSON.parse(dataJson)
console.log(`Received: ${dataReceived}`)
}).catch(err => {
if (err === "server") return
console.log(err)
})
}
为什么我得到 201,而不是按预期返回的 JSON 对象,并且如迅雷客户端所示?
解决方案
您的“迅雷客户端”显示 201 响应代码是您后端的成功(根据 HTTP 标准,2xx 代码是成功的响应)
您明确指出,如果不是 200,则表示失败。在您的代码中更改它以接受所有 2xx。ok
(window.fetch 返回一个 Response 实例,如果响应代码是 2xx MDN,它将 readonly 属性设置为 true )
.then(resp => {
if (resp.ok) {
return resp.json();
} else {
console.log("Status: " + resp.status)
return Promise.reject("server")
}
})
201 表示已创建,
请求成功,结果创建了一个新资源。这通常是在 POST 请求或某些 PUT 请求之后发送的响应。MDN
推荐阅读
- css - 为什么路径的第 n 个孩子不可访问?
- python - AttributeError:'pygame.Surface'对象没有属性'get'(python 2.7.5)
- matlab - 在 Matlab 中使用 Sobel 掩码进行边缘检测此代码不接受下面提到的行
- telerik - 将 Telerik Blazor Control 连接到实体和 Ardalis.SmartEnum
- google-analytics - gatsby-plugin-google-analytics + Shopify - 转换不起作用
- bash - 安排工作每隔一天运行一次的最佳方法?
- python - Matlab在Python中重塑等价物
- sql-server - 在 Docker 容器中的 Server Core 2019 上安装 SQL Server LocalDB
- python - 从另一个文件调用的数学函数的问题
- algorithm - 桶排序是否要求您事先知道值的范围?