JS - 从表单答案创建重定向 URL 字符串

Posted

技术标签:

【中文标题】JS - 从表单答案创建重定向 URL 字符串【英文标题】:JS - Create Redirect URL String from Form Answers 【发布时间】:2020-03-12 12:44:46 【问题描述】:

我们的网站正在为我们的应用程序表单从 FormAssembly 切换到 Typeform,但对于我们来说,能够根据用户回答表单的方式自定义表单的“完成时重定向”URL 至关重要。 FormAssembly 提供了该功能,但我认为 Typeform 没有,如果没有解决方法,它将破坏我们所有的 Analytics 目标转换报告和商业智能数据。维护这些数据和转化 URL 对我们来说非常重要。

也许有一种 javascript/jQuery/php 方式可以在 Typeform 中完成我们对 FormAssembly 所做的事情(见下文)?还是其他解决方法?甚至有可能做到这一点吗?希望有人可以提供一些建议...

这是我们当前使用 FormAssembly 表单的完成 URL 重定向: /application-complete?details=[NAcert]

该字符串的“N​​Acert”部分是根据用户在我们的表单中回答两个问题的方式计算得出的具有四个可能值的值:

    NAcert = 公民身份问题的答案是“美国”或“加拿大”;认证问题的答案是“是” NAnot = 公民身份问题的答案是“美国”或“加拿大”;认证问题的答案是“否” OTHcert = 对公民身份的回答不是“美国”或“加拿大”;并且对认证问题的回答是“是” OTHnot = 对公民身份的回答不是“美国”或“加拿大”;并且对认证问题的回答是“否”

虽然 Typeform 提供隐藏字段,但无法从其他表单答案中填充它们,尤其是使用上述值的条件规则。同样,它允许您将字段值传递给重定向 URL,但只能再次直接向上传递值,而无需任何条件...

编辑:尝试调整操作的链接解决方案不适用于 Typeform

【问题讨论】:

这能回答你的问题吗? Jquery / Javascript change form action based on input field 不,不幸的是,这不起作用,因为没有对
元素的控制,当我查看其源时,该表单似乎没有使用
,它的编码方式不同 - 请参阅@ 987654322@
【参考方案1】:

此处来自 Typeform 的 Marcel。

虽然不理想,但您可以使用计算器中的分数变量和具有不同重定向 URL 的多个感谢屏幕来实现您的目标。您可以查看此form(API 定义here)了解我的意思,如果需要,请随时要求澄清。

在此示例中,每个感谢屏幕都有不同的文本,但您可以只使用相同的内容,只需修改重定向按钮 URL 以使它们对您的受访者看起来相同。

我们目前正在努力支持表单中的多个变量,并且它们也有不同的类型(因此在这种情况下不仅是数值,还有字符串),所以希望在我们发布这个时(明年初根据我们的计划),这应该容易得多。希望我的“hack”在此期间有所帮助,感谢您使用我们的产品!

PS:如果您已经在表单中使用了 score 变量,我的 hacky 解决方案将不起作用。

【讨论】:

哇,感谢 Marcel 如此迅速地跟进!这绝对看起来像是在寻找解决方案的路上,但我们需要用户自动重定向(而不是在按钮单击之后)。我之前为此尝试过计算器,但它对我不起作用。你能在 gmail.com 的 mishchenko 与我联系吗? 是的,我担心这是我的解决方案的另一个缺点......正如我所说,这很hacky :P 如果让您的客户点击重定向按钮绝对不适合您,那么恐怕您将不得不等到我们发布对多个变量的支持 哦,真令人失望。您是否认为我们无能为力 - 例如以某种方式使用我们自己的 JS 来更改隐藏的 typeform 字段的值,然后将其传递到 typeform UI 重定向 URL 设置中的重定向 URL? (这已经可以使用正常的响应值(即电子邮件地址)来完成,但正如您所知,我正在尝试为这个用例创建一个新的计算值)和回复:多个变量,是 2020 年的绝对最早时间(即使对于测试版?)。本周推出,真的不想用不正确的表单完成 URL 搞砸我们的分析数据 另一个想法是您的示例的一些代码可以自动按下第二个按钮(在您的表单中“重定向我”);还是第一个(“提交”)?只是为了减少用户的摩擦......【参考方案2】:

是的,你可以。使用提交事件来改变表单的动作值。

function changeAction(e) 
  var NAcert = 'NAcert' // insert code to set this value
  e.target.action = '/application-complete?details=' + NAcert

myForm.addEventListener("submit", changeAction);

显然,如果您使用 jQuery,您可以使用该方法来做完全相同的事情。另外,我实际上并没有测试这段代码,但希望你能明白。

【讨论】:

以上是关于JS - 从表单答案创建重定向 URL 字符串的主要内容,如果未能解决你的问题,请参考以下文章

从 301 重定向中删除查询字符串

部分匹配的Htaccess重定向 - URL从相同元素开始

记一次URL重定向漏洞的探测脚本的优化

.htaccess 从 GET 变量重定向到 url 字符串

Django 唯一 URL 重定向问题

如何使用 ajax jQuery 重定向指定重定向 url