Fetch请求后页面没更新,是哪里写错了吗?
我用 Fetch 发了个 POST 请求提交表单,控制台能看到请求成功了,但页面内容没变,难道 fetch 不会自动刷新页面吗?
我试过在 then 里加 location.reload(),但感觉不太对,应该有更好的做法吧?
<form id="myForm">
<input type="text" name="title" value="测试文章" />
<button type="submit">提交</button>
</form>
<script>
document.getElementById('myForm').addEventListener('submit', async (e) => {
e.preventDefault();
await fetch('/api/posts', { method: 'POST', body: new FormData(e.target) });
// 这里该怎么做才能更新页面?
});
</script>
你的请求成功后,后台数据是改了,但前端 DOM 还是旧的样子。你需要在 fetch 完成后重新渲染页面。
最简单的做法是把数据重新取一遍:
如果你只是想在当前页面显示提交成功的信息,也可以简单粗暴一点:
至于你用的 location.reload(),确实太粗暴了,相当于刷新整个页面,体验不好,除非你真的需要重新加载整个页面的数据。
核心就一句话:fetch 成功后,该查数据查数据,该改 DOM 改 DOM,别指望它会自动帮你渲染。