为什么我在提取响应中的字符串比较不能正常工作?
Why is my string comparison in fetch response not working properly?
基本上,我将草稿的 ID 发布到服务器以使用提取删除草稿,如果成功,服务器将响应成功文本。这是我的代码。
fetch(this.url + "/vue/api/processdraft?action=delete&id=" + item.id, {
method: "POST"
})
.then(response => {
return response.text();
})
.then(function (response) {
console.log(response);
if (response === "success") {
console.log("Test");
this.draftList.splice(index, 1);
}
});
在上面的代码中,在 console.log(response) 中按预期显示 success。但是 if 块中的代码不起作用。而且我无法弄清楚它有什么问题?它甚至不会按预期打印 Test 。
这是输出的屏幕截图。
而且我还检查了是否有重要的响应文本前后没有白色 space。
编辑: 我在服务器端检查了 whitespaces,虽然我确定没有 whitespace,但忘了考虑换行符.所以这已经按照答案的建议使用 trim() 解决了。
控制台中可能有您看不到的字符(换行符、空格...)。要显示它们,您可以使用 JSON.stringify
:
console.log(" success\n"); // success, right?
console.log(JSON.stringify(" success\n")); // no, not quite ...
要在忽略空格和换行符的情况下进行匹配,请使用 response.trim() === "success"
或 response.includes("success")
。
你可以尝试使用tim():
.then(function (response) {
console.log(response);
if (response.trim() === "success") {
console.log("Test");
this.draftList.splice(index, 1);
}
});
希望它能奏效。
基本上,我将草稿的 ID 发布到服务器以使用提取删除草稿,如果成功,服务器将响应成功文本。这是我的代码。
fetch(this.url + "/vue/api/processdraft?action=delete&id=" + item.id, {
method: "POST"
})
.then(response => {
return response.text();
})
.then(function (response) {
console.log(response);
if (response === "success") {
console.log("Test");
this.draftList.splice(index, 1);
}
});
在上面的代码中,在 console.log(response) 中按预期显示 success。但是 if 块中的代码不起作用。而且我无法弄清楚它有什么问题?它甚至不会按预期打印 Test 。 这是输出的屏幕截图。
而且我还检查了是否有重要的响应文本前后没有白色 space。
编辑: 我在服务器端检查了 whitespaces,虽然我确定没有 whitespace,但忘了考虑换行符.所以这已经按照答案的建议使用 trim() 解决了。
控制台中可能有您看不到的字符(换行符、空格...)。要显示它们,您可以使用 JSON.stringify
:
console.log(" success\n"); // success, right?
console.log(JSON.stringify(" success\n")); // no, not quite ...
要在忽略空格和换行符的情况下进行匹配,请使用 response.trim() === "success"
或 response.includes("success")
。
你可以尝试使用tim():
.then(function (response) {
console.log(response);
if (response.trim() === "success") {
console.log("Test");
this.draftList.splice(index, 1);
}
});
希望它能奏效。