表单操作未在提交时重定向

时间:2019-03-12 03:59:10

标签: html forms submit action

我正在制作一个HTML表单直接输出到Google表格的情况(在此处有更多信息:https://github.com/jamiewilson/form-to-google-sheets),这是一个有趣的情况。但是,我的表单操作不会重定向,因为单击“提交”按钮后页面仅保持不变。 Google表格会记录输入内容,但不会在网页上显示。我想重定向到一个完全不同的页面。

我注意到这是一个常见问题,但是所有其他答案要么是a)重定向并且不提交用户的响应,要么b)提交响应但没有重定向。

谢谢。

  const scriptURL = 'https://script.google.com/macros/s/AKfycbyoQPDaaR1YTUFjkU7weJ_Y9uCTE7hoOK_5yUQVjE8EjVuEIRBh/exec'
  const form = document.forms['submit-to-google-sheet']

  form.addEventListener('submit', e => {
    e.preventDefault()
    fetch(scriptURL, { method: 'POST', body: new FormData(form)})
      .then(response => console.log('Success!', response))
      .catch(error => console.error('Error!', error.message))
  })
<!doctype html>
<html>
	<head></head>
<body>

<form name="submit-to-google-sheet" action="https://www.google.com">
  <input name="email" type="text" placeholder="insert text">
  <input id="submit" name="submit" type="submit" value="Submit">
</form>

	</body>
</html>

1 个答案:

答案 0 :(得分:0)

例如,如何进行此修改?如果事件可以取消,则使用54722/20124, 6945/2682, 83764/30138取消事件。根据您的情况,我想提出两种模式。

简单模式:

作为一个简单的修改,如何删除preventDefault()

发件人:

e.preventDefault()

收件人:

form.addEventListener('submit', e => {
  e.preventDefault()
  fetch(scriptURL, { method: 'POST', body: new FormData(form)})
    .then(response => console.log('Success!', response))
    .catch(error => console.error('Error!', error.message))
})

其他模式:

与其他模式一样,如果只想在form.addEventListener('submit', e => { fetch(scriptURL, { method: 'POST', body: new FormData(form)}) .then(response => console.log('Success!', response)) .catch(error => console.error('Error!', error.message)); }) 不返回错误时进行重定向,那么下面的修改又如何呢?在这种情况下,将不使用fetch()中的action="https://www.google.com"

示例脚本:

<form name="submit-to-google-sheet" action="https://www.google.com">

参考:

如果这些不是您想要的结果,我表示歉意。