Javascript 提交旧的谷歌表单,然后重定向到另一个页面

Javascript 提交旧的谷歌表单,然后重定向到另一个页面,javascript,html,google-sheets,google-forms,Javascript,Html,Google Sheets,Google Forms,我正在网页上使用谷歌表单。我将表单中的源代码直接复制到我的页面上,这样我就可以修改一些HTML,而不是使用iframe。然后,我想将用户重定向到另一个页面,而不是转到google文档响应页面 我遇到的问题是页面重定向。我可以通过以下方式在Chrome和Firefox中正常工作: <form target="GoogleResponse" action="https://docs.google.com/spreadsheet/ formResponse?formkey=xxxxxxxxxxx

我正在网页上使用谷歌表单。我将表单中的源代码直接复制到我的页面上,这样我就可以修改一些HTML,而不是使用iframe。然后,我想将用户重定向到另一个页面,而不是转到google文档响应页面

我遇到的问题是页面重定向。我可以通过以下方式在Chrome和Firefox中正常工作:

<form target="GoogleResponse" action="https://docs.google.com/spreadsheet/
formResponse?formkey=xxxxxxxxxxxxxxxxxxxxxxxxxx&amp;ifq;" onsubmit="
window.location = 'targetPage.html';" method="POST" id="ss-form">

IE和Safari都自动进行了重定向,而响应从未写入谷歌表单。如果我放弃重定向,该操作在这两种情况下都能完美工作,并且响应会记录在谷歌电子表格中

因此,我尝试退出该操作,而是在onsubmit中执行所有操作,如下所示:

<form target="GoogleResponse" onsubmit="this.action = https://docs.google.com
/spreadsheet/formResponse?formkey=xxxxxxxxxxxxxxxxxxxxxxxxxx&amp;ifq'; 
window.location = 'targetPage.html';" method="POST" id="ss-form">

和以前一样的问题,IE和Safari都重定向,并且没有任何内容写入Google电子表格。再一次,如果我删除重定向,所有浏览器都会记录响应。我还可以做其他事情,比如在行动后发出警报,一切都会继续正常工作。我唯一一次看到问题是重定向


所以在这一点上,我唯一能理解的是,它们是重定向和操作之间的某种冲突。我在javascript和表单方面的工作知识非常有限,因此非常感谢您的帮助或建议

听起来浏览器在处理重定向之前没有完成表单提交。onsubmit发生在提交之前,因此您无法在那里处理问题

使用目标iframe的onload函数进行重定向。

这是以类似的方式提出的:

仔细看看答案。iframe的onload函数将处理重定向,因此在提交完成并且google给出响应之前,重定向不会发生。因此,当加载来自google的隐藏响应时,我们会触发重定向。这是客户端和服务器之间的异步功能。我们正在等待服务器在重定向之前处理数据



扩展说明:您可以尝试将重定向放在setTimeout函数中。这将延迟重定向的执行,从而允许服务器首先处理提交。但是setTimeout需要一个固定的时间量,因此如果数据处理不是同步的(即异步的),setTimeout将无法工作,因为它可能触发得太早或太晚。当数据处理需要不确定的时间量(如http请求)时,异步数据处理适用。

这是否回答了您的问题?