如何跟踪AJAX GET请求&使用Google Analytics下载PDF?

时间:2011-11-04 18:21:32

标签: javascript jquery ajax google-analytics

我正在通过jQuery get Ajax调用检索内容,然后将其添加到元素中。添加HTML代码没有任何问题,只是JS代码丢失。我究竟做错了什么?当我在Firebug中查看响应时,它仍然存在,它只是没有添加到HTML元素中。

我的Ajax请求:

function get_overlay_content(path)
{
    $.get(path, function(data) { 
        $("#overlay_content").html(data).fadeIn(500); 
        $(function()
     {
        // do something 
     });
    });
}

Firebug中的回复:

<div id="imprint" class="overlay_box">
    <script type="text/javascript">

      var _gaq = _gaq || [];
      _gaq.push(['_setAccount', 'UA-XXX-1']);
      _gaq.push(['_trackPageview']);

      (function() {
        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
      })();

    </script>
    <div id="overlay_close" onclick="close_overlay();"><img src="/2012/images/overlay_close.png" id=""></div>
# ETC

更新后的HTML:

<div id="overlay_content">

<div id="imprint" class="overlay_box">

    <div id="overlay_close" onclick="close_overlay();"><img src="/2012/images/overlay_close.png" id=""></div>
    <div class="overlay_heading"><img src="/2012/images/heading_download.png" height="65"></div>

# etc.

我的猜测是它与编码有关。你觉得怎么样?

谢谢! 奥拉夫


解决:

感谢Uzi,根据Google指南Asynchronous Tracking Usage Guide

,解决方案非常简单

但是要让每个人都明白:如果你有一个主文件(index.html)从你通过AJAX GET请求(例如jQuery.get())检索partials(让我们称之为/partials/_download_pdfs.html)您需要做的就是使用Google Analytics跟踪每个AJAX请求如下:

为Analytics ABOVE添加其他Javascript的跟踪代码 和你的AJAX GET请求,将以下代码放在回调函数中(如果你没有把它放在回调中,它可能会减慢你的实际请求)

$.get(path_to_track, function(data) { 
  // Fade in effect:
  $("#container").html(data).fadeIn(500);

  // this part is interesting:
  _gaq.push(['_setAccount', 'UA-XXX-1']);
  _gaq.push(['_trackPageview', path_to_track]);

  // Do other stuff in the callback
});

就是这样。如果您想在使用jQuery的AJAX GET请求检索的页面上跟踪PDF下载(正如我所做的那样),只需将以下代码添加到部分(例如/partials/_download_pdfs.html)

<script type="text/javascript">

        $(document).ready(function() {

            $(".pdf_link").click(function(){
                _gaq.push(['_setAccount', 'UA-XXX-1']);
                _gaq.push(['_trackPageview', '/pdf/' + $(this).attr("id")]);
            });
        });
</script>

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您将使用AJAX获取HTML代码。 该代码块包含一个脚本标记,您希望脚本运行一个请求完成。 不幸的是,它不能以这种方式工作,因为就DOM而言,这只是一个元素。

我不确定为什么你需要一个用于运行谷歌分析的AJAX代码,但是如果它包含动态数据,只需让AJAX调用返回你需要的参数,并在本地运行这个代码。