在WFFM中有一个选项,当有人放弃表格时,表格中输入的任何数据都会被记录下来,并且可以通过Dropout Report访问。
我有一个WFFM,我已启用Google Analytics并启用了dropout功能。不幸的是,我没有看到数据库中记录的任何数据,并且Dropout Report是可见的,但是空的。
我从WFFM文件夹中包含的javascript代码中看到,一系列AJAX调用应该保存模糊事件的字段 - 调用/ sitecore modules / web / Web Forms for Marketers / Tracking.aspx
我尝试调试Javascript代码,但该方法应该将信息发布到/ sitecore modules / web / Web Forms for Marketers / Tracking.aspx永远不会被调用。你能想到这个代码不起作用的任何原因吗?此外,有谁知道这个信息应该记录在哪个表中?它是WFFM DB中的字段表吗?
最后,即使我已经在这个特定的WFFM表单上启用了分析,并且我已经将一个广告系列和一个目标与提交表单相关联,但这些都没有记录下来。我看到表单中输入的数据已成功存储并显示在数据报告中,但没有关于广告系列和目标的信息记录在数据库中。
我甚至直接在运行的DMS DB中手动检查:
select top 10
p.DateTime, p.UrlText, cp.CampaignName
,i.Url, vi.VisitId
from pages p
inner join ItemUrls i on p.ItemId = i.ItemId
inner join Visits vi on vi.VisitId = p.VisitId
inner join GeoIps g on vi.Ip = g.Ip
left join Campaigns cp on cp.CampaignId = vi.CampaignId
order by p.DateTime desc
此图显示正在点击呈现表单的页面,但没有与该访问关联的广告系列。
然后我尝试了以下内容:
select pe.datetime, ped.Name, pg.UrlText from PageEvents pe
inner join PageEventDefinitions ped on ped.PageEventDefinitionId = pe.PageEventDefinitionId
inner join Pages pg on pg.PageId = pe.PageId
order by pe.DateTime desc
但是我没有看到此特定广告系列的任何条目,也没有看到目标(我看到与非WFFM Sitecore项目相关的其他广告系列和目标的条目)
非常感谢任何建议!
谢谢,
弗朗西斯
修改
sc.webform.js文件包含以下方法:
_create: function () {
var self = this,
options = this.options;
if (options.tracking) {
this.element.find("input[type!='submit'], select, textarea")
.bind('focus', function (e) { self.onFocusField(e, this) })
.bind('blur change', function (e) { self.onBlurField(e, this) });
this.element.find("select")
.change(function () { $scw.webform.controls.updateAnalyticsListValue(this) });
this.element.find("input[type='checkbox'], input[type='radio']")
.click(function () { $scw.webform.controls.updateAnalyticsListValue(this) });
}
this.element.find(".scfDatePickerTextBox").each(function () { $scw.webform.controls.datePicker(this) });
},
这应该由sc.webform小部件初始化的表单调用。它应绑定所有输入字段,下拉列表和文本区域的焦点和模糊更改事件。不幸的是,当我试图在这个方法中加入一个断点时,它永远不会被调用。
第二次编辑
有趣。我发现整个事情应该从包含WFFM表单的页面中嵌入的这一行Javascript代码开始:
<script type="text/javascript">
$scwhead.ready(function() {
$scw('#form_A8BF483419174F97A2830E12CBCF7E4F').webform({formId: "{A8BF4834-1917-4F97-A283-0E12CBCF7E4F}",pageId: "{21C24144-B964-4FBA-8388-D9B90EBBC17C}",eventCountId: "pagecolumns_0_columncontent_0_bottomrow_0_form_A8BF483419174F97A2830E12CBCF7E4F_form_A8BF483419174F97A2830E12CBCF7E4F_eventcount",tracking: true})
});
</script>
一旦我在这里设置了一个断点,我终于可以追溯到sc.webform.js中定义的jQuery.UI小部件的_create方法。调用_create的代码实际上在jQuery.UI库中。有点有道理,对吧?
最后,执行 _create 中的代码,模糊事件绑定到 TrackEvents 方法,该方法也在窗口小部件中定义:
_trackEvents: function(events) {
$scw.ajax({
type: 'POST',
url: "/sitecore modules/web/Web Forms for Marketers/Tracking.aspx" + location.search,
data: {track: JSON.stringify(events)},
dataType: 'json'
});
没有意义的是,现在,即使我终于可以看到每当我在WFFM表单中从一个字段到另一个字段进行选项时调用trackEvents(为什么在对我来说是一个谜之前没有工作),我不会t看到WFFM DB中记录的任何数据。我甚至在数据库中尝试了一个快速查询:
select f.Timestamp, f.StorageName, fi.Value, fi.FieldName
from Form f
inner join Field fi on f.Id = fi.FormId
order by f.Timestamp desc, FieldName
有人知道Tracking.aspx应该保存捕获的字段信息吗?
答案 0 :(得分:1)
这可能很愚蠢,但您是否正确配置了WFFM的数据源?我的意思是,显然,你正在使用WFFM ..但它是设置为使用SQL还是使用WFFM默认使用的“文件”作为它的数据库。
像这样使用SQL: <!-- MSSQL-->
<formsDataProvider type="Sitecore.Forms.Data.DataProviders.WFMDataProvider,Sitecore.Forms.Core">
<param desc="connection string">Database=Sitecore_WebForms;Data Source=xxx;user id=xxx;password=xxx;Connect Timeout=30</param>
</formsDataProvider>
<!-- SQLite -->
<!--<formsDataProvider type="Sitecore.Forms.Data.DataProviders.SQLite.SQLiteWFMDataProvider,Sitecore.Forms.Core">
<param desc="connection string">Data Source=/data/sitecore_webforms.db;version=3;BinaryGUID=true</param>
</formsDataProvider>-->
如果你没有正确配置,我想知道某个地方是否记录了数据而不是另一个地方?另外,我的另一个问题是询问这是否是开发环境,你是否在实时模式下运行webforms?在我看来,这是一个配置问题。
答案 1 :(得分:1)
我们在6.5更新6和WFFM 2.3.3 rev上遇到了完全相同的问题。我们可以看到对服务器的异步调用,包括可能形成的包含正确事件的json对象。
示例:
track:[{"fieldId":"{E0A0BCDD-85E1-4D8D-9E76-5ABD240423C9}","type":"Field Completed","value":"test","formId":"{0F3B57C1-1B6A-43B9-A5A6-2E958C168B31}","pageId":"{025AFF68-62B9-42CE-B49F-0C36311E1976}","ticks":16}]
我们没有看到任何辍学者到达数据库,但是......
答案 2 :(得分:0)
您是否确定已部署了广告系列和目标?如果您已切换数据库,则可能不是。要重新部署,请执行以下操作:
不要忘记为广告系列做同样的事情。