使用fetch后如何重新加载页面

时间:2021-05-10 07:22:14

标签: javascript ajax dom

想知道为什么我下面的代码不起作用。基本上我是从我的 url 中获取数据来删除一些东西。删除时,它应该刷新。然而它似乎并没有让我这样做。但是如果我手动刷新页面,它会删除帖子。

当我使用 Ajax 方法时有效,但我不知道为什么。

获取方法

const deleteBTN = document.querySelectorAll('.deleteBtn');
const update = document.querySelectorAll('.postedNote');

console.log(deleteBTN);

for (let btn of deleteBTN) {
    btn.addEventListener('click', (e) => {
        console.log("Delete from front end");
        console.log(btn[btn])
        let id = e.target.dataset.btn;
        fetch('http://localhost:3000/api/notes' + '/' + id, {
            method: "DELETE",
        }).then(() => {
            Location: reload()
        })
    })
}

Ajax 方法

$(".deleteBtn").click((e) => {
    $.ajax({
        type: "DELETE",
        url: `http://localhost:3000/api/notes/${e.target.dataset.btn}`,
        success: function () {
            console.log("delete success");
        },
    }).done(
        setTimeout(() => {
            window.location.reload();
        }, 500)
    );
});

2 个答案:

答案 0 :(得分:0)

我认为您不应该在删除其中一个元素时尝试重新加载页面, 相反,我会检查响应状态并手动更新 DOM 以使已删除的元素在响应显示已成功删除时消失。

答案 1 :(得分:0)

我们可以使用 window.location.reload 重新加载,就像 ajax 成功时所做的那样。

请在下面找到代码片段

SELECT NON_NEGATIVE_DERIVATIVE(MEAN(transmit), 10s) as transmit, NON_NEGATIVE_DERIVATIVE(MEAN(receive), 10s) as receive
FROM nics
WHERE (host = ‘somethost’)
AND time >= ‘3600s’
GROUP BY time(600s), host fill(none)

另外,以下几点注意事项 当我们重新加载页面时,Ajax 的使用在这里失败了。 要么

  • 我们应该执行一些 DOM 操作来删除已删除的帖子 从页面

或者,

  • 如果我们使用 React,我们可以将帖子绑定到状态,然后 删除 API 成功调用时删除的帖子,以便组件 重新呈现,我们不需要刷新页面。