为什么我在提取响应中的字符串比较不能正常工作?

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);
    }
});

希望它能奏效。