我有一个php页面,它将数组编码为JSON对象或JSONP回调,并简单地回显结果。因为这将成为一个可以直接访问的独立页面,我想收集见解并包含谷歌分析。
JSON编码php页面:
<?php
$arr = array('country' => 'United States', 'city' => 'New York');
if(isset ($_GET['jsonp'])) {
echo $_GET['jsonp'] . '(' . json_encode($arr) . ')';
}
else {
echo json_encode($arr);
}
?>
jQuery解码部分:
<script>
$.getJSON('https://geoip-db.com/json/geoip.php?jsonp=callback')
.done (function(location)
{
$('#country').html(location.country);
$('#city').html(location.city);
});
</script>
Google指南建议创建一个单独的php文件,其中包含javascript跟踪代码,并将其包含在您要跟踪的所有php页面中。类似的东西:
<?php include_once("analyticstracking.php") ?>
这样,跟踪器可以工作,但是当尝试解码生成的JSON对象时,JQuery部分会因注入的跟踪器脚本而导致语法错误中断。 php编码页面也回显了跟踪器脚本,这会产生无用的JSON结果。
有什么建议吗?
答案 0 :(得分:2)
我不确定我是否正确理解您的问题,但您可以随时通过measurement protocol拨打服务器代码来调用Google Analytics:
$url = "v=1&t=pageview&tid=UA-39221247-1&cid=5555&dp=%2Fmy%2Fpage";
fopen($url);
凡&#34; v&#34;是版本,&#34; tid&#34;帐号,&#34; cid&#34;客户端ID和&#34; dp&#34;页面的文档路径。
这样,在解析的输出中将没有会破坏jQuery代码的跟踪代码。
如果要将各个视图聚合到一个会话中,则需要在自己调用之间维护cid。
请注意,这与基于Javascript的跟踪不能很好地混合(即使您使用现有ga cookie中的客户端ID,它也会在GA中启动新会话。)
答案 1 :(得分:1)
你能否在页脚中加载它?
$( document ).ready(function() {
$("analytics-tracking").load('analyticstracking.php');
});
答案 2 :(得分:1)
Eike的回答指向了正确的方向,因此他的回答为+1,但我不得不使用cURL而不是fopen()。
我的完整工作解决方案:
dll.h
答案 3 :(得分:0)
我想你的谷歌分析部分一切正常,jquery中断因为你在getJson
返回一个非json值,在if()
部分返回的内容如下:
回调('country'=&gt;'美国','city'=&gt;'纽约');
不是有效的json,else部分没问题,你应该在2部分回应相同的内容。