gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 13:17:20 24 4
gpt4 key购买 nike

我在网页上使用 Google 表单。我将源代码从表单直接复制到我的页面上,这样我就可以修改一些 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 都自动进行重定向,并且响应从未写入 Google 表单。如果我放弃重定向,该操作将在两者中完美运行,并且响应会记录在 Google 电子表格中。

所以我试图取消操作,而是在 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 函数进行重定向。

有人以类似的方式提出这个问题:

Old Google Form redirect after submission

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


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

关于javascript - 提交旧的谷歌表单然后重定向到另一个页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9732357/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com