You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用DELETE接口后页面自动刷新的问题求助

解决DELETE请求触发页面自动刷新的问题

我一眼就注意到你踩了一个很容易忽略的JavaScript语法坑——你的函数名用了delete,这可是JS的保留关键字啊!这就是导致页面莫名刷新的根本原因。

为什么会这样?

delete是JavaScript内置的操作符,用来删除对象的属性,你把它用作自定义函数名时,会和全局的delete操作符产生冲突,导致引擎解析执行时出现意料之外的行为,而页面刷新就是这种冲突引发的副作用之一。你提到直接在控制台调用delete(1)也会触发刷新,这更坐实了这个问题——因为此时函数的定义和内置操作符冲突,执行逻辑完全偏离了你的预期。

解决方案:修改函数名

只需要把函数名改成非保留字的名称,比如deleteProduct,就能解决这个问题。下面是修改后的完整代码:

修改后的删除函数

async function deleteProduct(param) {
    const response = await fetch(`${api_Url}/products${param}`, {
        method: 'DELETE',
        headers: {
            'Content-Type': 'application/json',
            'Authorization': `bearer ${token}`
        },
    }).then((response) => {
        console.log(response);
    })
};

修改对应的调用代码

const deleteBtn = document.querySelectorAll('.delete_icon');

deleteBtn.forEach(element => {
    element.addEventListener('click', event => {
        event.preventDefault();

        const Id = event.currentTarget.id;
        deleteProduct(Id); // 这里同步修改函数名
    });
});

额外验证

你可以再去控制台调用deleteProduct(1)试试,这次应该就不会触发页面刷新了,DELETE请求也能正常完成。

另外,你之前尝试的beforeunload事件监听完全没必要,反而会带来不必要的弹窗,现在可以直接移除那段代码了。

内容的提问来源于stack exchange,提问作者Patrick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 17:01:46