如何用URL预填充wufoo字段

How to prepopulate a wufoo field with an URL?

本文关键字:wufoo 字段 填充 何用 URL      更新时间:2023-09-26

似乎Wufoo有一个错误,因为我无法用url预填充嵌入的Wufoo表单的字段。我使用的是javascript嵌入方法,您可以使用'defautValues'选项对其进行初始化。

不幸的是,如果我用一个url(例如:'defaultValues':'Field1=https://youtube.com')初始化一个字段,Wufoo会从url中去掉一个斜杠,这会使它无效。

我尝试对url进行"url编码"(例如:'defaultValues':'Field1=https%3A%2F%2Fyoutube.com'),但随后wufoo产生了一个错误,并且不显示表单。

下面是一个示例表单,供您尝试自己查看行为:

<div id="wufoo-mrmifr316ya92y">
Fill out my <a href="https://democratech.wufoo.com/forms/mrmifr316ya92y">online form</a>.
</div>
<script type="text/javascript">var mrmifr316ya92y;(function(d, t) {
var s = d.createElement(t), options = {
'userName':'democratech',
'formHash':'mrmifr316ya92y',
'autoResize':true,
'height':'259',
'async':true,
'host':'wufoo.com',
'defaultValues':'Field1=https://youtube.com', //removes 1 slash (https:/youtube.com)
//'defaultValues':'Field1=https%3A%2F%2Fyoutube.com', //produces an error
'header':'hide',
'ssl':true};
s.src = ('https:' == d.location.protocol ? 'https://' : 'http://') + 'www.wufoo.com/scripts/embed/form.js';
s.onload = s.onreadystatechange = function() {
var rs = this.readyState; if (rs) if (rs != 'complete') if (rs != 'loaded') return;
try { mrmifr316ya92y = new WufooForm();mrmifr316ya92y.initialize(options);mrmifr316ya92y.display(); } catch (e) {}};
var scr = d.getElementsByTagName(t)[0], par = scr.parentNode; par.insertBefore(s, scr);
})(document, 'script');</script>

你确认这个错误了吗?除了从字段中删除https://(这对我来说不是一个很好的解决方法)之外,还有其他解决方法吗?

这里已经有人问过这个问题:为什么我不能添加一个URL作为预填充的Wufoo字段条目?但由于没有得到回答,我想我会问一个更详细的问题,并举一个例子来实际尝试代码。

这不是一个真正的答案,而是一个在某些情况下可以工作的变通方法。如果您使用的是wufoo-webhook通知,您可以对预填充的wufoo表单发送给您的"修剪"的url(只有1个斜杠的url)进行后处理,以确保在将url保存到数据库之前添加第二个斜杠(或其他)。为此,我使用了一个ruby函数,如下所示:

def fix_wufoo_bug(url)
    url.gsub!(':/','://') if url.match(/https?:'/'//).nil?
    return url
end

刚刚收到来自Wufoo技术支持的答案(对于周日的问题来说很快!):

谢谢你伸出援手。很抱歉听到您对此有问题。URL mods确实可以使用/,但如果你把多个放在一起,它只能显示第一个。很抱歉听到这个坏消息。恐怕即使你是使用不同的字段,例如单行文本字段。

相反,您可以使用www.youtube.com而不是http://youtube.com.那样你仍然可以添加网站,但其中没有https。对不起不能在这里做你想做的事。如果您还有其他问题。

最佳,

因此,这似乎确实是一个错误,并且没有正确的方法来做到这一点。