【问题标题】:Why is my ajax form submission goal not being tracked?为什么我的 ajax 表单提交目标没有被跟踪?
【发布时间】:2014-07-14 16:36:56
【问题描述】:

我正在尝试在提交有效的 ajax 表单后提交一个目标事件。

我正在使用 analytics.js 并且我已经创建了目标,但这是我第一次尝试目标,所以我可能会遗漏一些重要的东西。 表单验证并正确提交,只是没有跟踪谷歌分析中的目标。

我的整个表单功能如下,但问题区域一定是:

// custom event for google analyics
$(document).on('formSuccess', function() {
    ga('send','event','form','submission');
})

我的目标是:在 GA 中设置:

Category:'form'    
Action: 'submission'    
Label: blank    
Value: blank
Use the Event value as the Goal Value for the conversion: Yes

当我验证时,我得到了 0% 的转化率。甚至可以验证 ajax 表单吗?

我很早就有一个用于“formSuccess”的事件监听器,如果 response.success 为真,我将在 ajax.success 中触发该事件。顺便说一句,其他一切都很好。


REA.mailForm = function() {
    var formId = '#tour-form';

    // custom event for google analyics
    $(document).on('formSuccess', function() {
        ga('send','event','form','submission');
    })

    $(formId).submit(function(e) {

        e.preventDefault();

        var firstName = $(formId+' #first-name').val();
        var lastName = $(formId+' #last-name').val();
        var phone = $(formId+' #phone').val();
        var email = $(formId+' #email').val();
        var datePicker = $(formId+' #date-picker').val();
        var timePicker = $(formId+' #time-picker').val();
        var referral = $(formId+' #referral option:selected' ).val();
        var formData = {};
        var alertElement = $(formId+' .alert');

        alertElement.removeClass('alert-success alert-danger');

        var alertClass = '';
        var alertText = '';
        var showAlert = function(alertClass, alertText) {
            alertElement
            .addClass(alertClass)
            .show()
            .find('.alert-text').text(alertText);

        };

        // super basic validation
        // if((firstName && lastName && phone && email) !== '') {
            // prepare each form field for php form processing
            formData.firstName = firstName;
            formData.lastName = lastName;
            formData.phone = phone;
            formData.email = email;
            formData.datePicker = datePicker;
            formData.timePicker = timePicker;
            formData.referral = referral;
            formData.website = window.location.pathname;

            // send data and examine response
            $.ajax({
                type: 'POST',
                url: 'process.php',
                data: formData,
                success: function(data) {
                    var response = JSON.parse(data);
                    if(response.failure){
                        alertClass = 'alert-danger';

                        for (var key in response) {
                            alertText += response[key]+'\n';
                        }

                    } else if(response.success) {
                        alertClass = 'alert-success';
                        alertText = response.success;
                        REA.clearForm(formId);
                        // custom event for analytics
                        $(document).trigger('formSuccess');
                    }

                    showAlert(alertClass, alertText);
                },
                error: function() {
                    showAlert('alert-danger', 'Sorry. Something went wrong. Your message was not received.');
                }
            });

            var timer = setTimeout(function() {
                clearTimeout(timer);
                alertElement
                .removeClass('alert-success alert-danger')
                .hide()
                .find('.alert-text').text('');
            }, 10000);

            return false;
        // }
    });
}

【问题讨论】:

  • 您的 GA 部件看起来不错。我建议检查控制台,确认您的 formSuccess 方法实际上是可以访问的。
  • @Jacob,它是可以访问的。我成功地从中运行控制台日志。所以也许我的问题是在 ga() 和谷歌分析之间。感谢您的回复。

标签: javascript jquery google-analytics


【解决方案1】:

事实证明,只需大约 24 小时即可收集数据并将其填充到分析中。从来没有任何问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-21
    • 2014-04-08
    • 1970-01-01
    • 1970-01-01
    • 2016-03-06
    • 1970-01-01
    相关资源
    最近更新 更多