我正在制作一个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>
答案 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">
如果这些不是您想要的结果,我表示歉意。