首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Netlify表单和服务工作者

Netlify表单和服务工作者
EN

Stack Overflow用户
提问于 2019-06-11 16:37:49
回答 2查看 104关注 0票数 0

我正试着在我的网站上设置netlify表单。我指出这个东西不适用于我的服务工作者(即使我只放置了基本的软件)。没有软件,一切都很好。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-12 03:23:39

感谢Netlify支持,我解决了我的问题。那些家伙是最好的(有一个免费的账户,直到今天还能从他们那里得到这么多的帮助,这真是太棒了)。因为Service worker劫持表单请求,所以Netlify没有捕获我提交的任何表单。

解决方案:您需要在联系人页面禁用service worker:

代码语言:javascript
复制
<script>

  navigator.serviceWorker.getRegistrations().then(function(registrations) 
    {
        for (let registration of registrations) {
            registration.unregister()
        }
    })
</script>

从现在起该服务工作者将被禁用后,如果您想确保服务工作者在提交后将再次工作,只需将操作添加到服务工作者将重新注册的成功页面即可

代码语言:javascript
复制
<form name="Netlify Form" method="post" data-netlify="true" action="/send">
票数 0
EN

Stack Overflow用户

发布于 2020-03-04 05:55:24

你不需要取消注册和重新注册你的服务工作者来运行netlify forms。一种更简单的方法是绕过SW缓存,总是向你发布表单的url添加一个唯一的字符串。

在我的例子中,我使用的是浏览器的fetch方法,而不是让它post到"/“,我向url添加了一个时间戳,如下所示:"/?t=1234652736”

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56539654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档