我正在尝试在我的网站上设置netlify表单。我指出,这与我的服务人员无关(即使当我只放置基本软件时)。没有SW,一切正常。 https://pages.pavelja.me/kontakt
答案 0 :(得分:1)
您不必注销并重新注册您的服务人员就可以使用netlify表单运行它。一种更简单的方法是通过始终向表单发布的网址添加唯一的字符串来绕过SW缓存。
在我的情况下,我使用浏览器的fetch方法,而不是将其发布到“ /”中,而是在URL中添加时间戳,例如:“ /?t = 1234652736”
const postUrl = '/?t=' + Math.floor(Date.now() / 1000);
fetch(postUrl, {
method: 'post',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
body: ...),
})
您不必使用fetch,例如,它也可以通过axios与ajax一起使用。
答案 1 :(得分:0)
感谢Netlify的支持我解决了我的问题。那里的家伙是最好的(拥有一个免费帐户,直到今天,他们的大力帮助都很棒)。因为Service worker劫持表单以请求,这就是Netlify没有捕获我的任何表单提交的原因。
解决方案: 您需要在联系页面上禁用Service Worker:
<script>
navigator.serviceWorker.getRegistrations().then(function(registrations)
{
for (let registration of registrations) {
registration.unregister()
}
})
</script>
从现在起该服务工作者将被禁用,如果您要确保该服务工作者在提交后将再次工作,只需在成功页面上添加操作即可再次注册该服务工作者
<form name="Netlify Form" method="post" data-netlify="true" action="/send">