我有以下代码:
async function handleSubmit(event) {
const url = new URL(form.action);
const formData = new FormData(form);
@type {Parameters<fetch>[1]}
const fetchOptions = {
method: form.method,
body: formData,
};
const response = await fetch(url, fetchOptions);
alert (response);
event.preventDefault();
}
有了它,我尝试将文件上传到外部 api,并在上传完成后接收服务器生成的 ID。但是,上传完成后,我会重定向到包含 id 的 api 响应正文。如何防止重定向并将 id 存储到变量中?
fetch(url, fetchOptions)
.then(function(response)
{
return response.json();
}).then(async function(response)
{
alert(response);
});
我尝试了上述方法,但仍然被重定向
您需要在函数结束或进入睡眠状态并将控制权返回给其调用之前调用
preventDefault
。即在您点击 await
之前。
由于您调用
preventDefault
太晚了,常规表单提交会继续导致浏览器导航。