提交表单后如何正确显示操作结果反馈?
我做了一个用户注册的表单,提交后想给用户一个明确的成功或失败提示,但现在的反馈总是延迟或者不显示。比如用户点完“注册”按钮,页面没反应,其实请求已经发出去了,只是没告诉用户结果。
我试过在 fetch 的 then 里直接改 DOM,但有时候状态更新了界面却没变。是不是得用什么状态管理?还是我写法有问题?
form.addEventListener('submit', async (e) => {
e.preventDefault();
const res = await fetch('/api/register', { method: 'POST', body: new FormData(form) });
const data = await res.json();
if (data.success) {
document.getElementById('feedback').innerText = '注册成功!';
} else {
document.getElementById('feedback').innerText = '注册失败:' + data.message;
}
});
首先建议在表单提交时显示一个加载状态,这样用户就知道系统正在处理了。另外,直接操作 DOM 有时会因为渲染优先级的问题导致更新不及时,用个变量来管理状态会更好些。
记得给反馈元素加点样式,比如成功的绿色和失败的红色背景,让用户一眼就能看明白。这个写法简洁又可靠,不用引入额外的状态管理工具了,毕竟为这点功能上个框架也太累赘了。