如何在php JSON编码结果中包含谷歌分析
How to include google analytics in a php JSON encode result?
我有一个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>
谷歌指南建议创建一个单独的php文件,其中包含javascript跟踪代码,并将其包含在您想要跟踪的所有php页面中。类似于:
<?php include_once("analyticstracking.php") ?>
通过这种方式,跟踪器可以工作,但当试图解码生成的JSON对象时,JQuery部分会出现由注入的跟踪器脚本引起的语法错误。php编码页面也呼应了跟踪器脚本,这会产生一个无用的JSON结果。
有什么建议吗?
我不确定我是否正确理解你的问题,但你可以通过测量协议用服务器端代码调用谷歌分析:
$url = "v=1&t=pageview&tid=UA-39221247-1&cid=5555&dp=%2Fmy%2Fpage";
fopen($url);
其中"v"是版本,"tid"是帐号,"cid"是客户端id,"dp"是页面的文档路径。
这样,在解析的输出中就不会有任何会破坏jQuery代码的跟踪代码。
如果您想将各个视图聚合到一个会话中,则需要在调用之间维护cid。
请注意,这与基于Javascript的跟踪不能很好地结合在一起(即使您使用来自现有ga cookie的客户端id,它也会在ga中启动一个新会话)。
你能不能不在页脚中这样加载它?
$( document ).ready(function() {
$("analytics-tracking").load('analyticstracking.php');
});
Eike的答案为我指明了正确的方向,因此他的答案为+1,但我不得不使用cURL而不是fopen()。
我的完整工作解决方案:
<?php
$curl_handle=curl_init();
curl_setopt($curl_handle, CURLOPT_URL,'http://www.google-analytics.com/collect/v=1&tid=UA-xxxxxxx-1&cid=555&t=pageview&dp=%2Fgeoip.php');
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_USERAGENT, 'Geoip tracker');
$query = curl_exec($curl_handle);
curl_close($curl_handle);
$arr = array('country' => 'United States', 'city' => 'New York');
if(isset ($_GET['jsonp'])) {
echo $_GET['jsonp'] . '(' . json_encode($arr) . ')';
}
else {
echo json_encode($arr);
}
?>
我想这对你的谷歌分析部分来说很好,jquery中断了,因为你在getJson
返回了一个不是json的值,在if()
部分,你返回了类似于:
callback('country'=>'UnitedStates','city'=>'NewYork');
不是一个有效的json,else部分很好,您应该在两个部分中返回相同的内容。
- 谷歌地图API JS V3包含但不起作用
- 如何正确地包含带有参数的谷歌地图API
- 谷歌脚本查看文本是否包含值
- 如何在php JSON编码结果中包含谷歌分析
- 获取包含我的谷歌应用程序脚本的页面的url
- 如何在本地而非CDN中包含谷歌地图JS库
- 谷歌脚本如果文件名包含x字符串日志“;x被发现“;缺少括号
- 谷歌表单:在文档的电子邮件中包含超链接'谷歌硬盘的位置
- 如何在谷歌网站中包含带有HTML的javascript
- 如何在 html 页面中包含谷歌应用脚本,该脚本在谷歌云端硬盘上具有上传功能
- 错误“包含”未定义在谷歌地图 JS API 中
- 将包含内容和元数据的文件上传到谷歌文档会返回400无效/错误请求
- 谷歌闭包编译器包含
- 检测覆盖是否包含标记对象.谷歌地图API V3,绘图库
- 在谷歌图表中包含带有MathJax的LaTeX符号
- 谷歌钱包:如何在success_handler中包含订单ID
- 谷歌地图API v3-创建一个包含其他属性内容的标记属性
- 谷歌应用程序引擎(PHP)-如何包含javascript
- 谷歌电子表格脚本为包含某个单词的行着色,并自动将该行移动到另一张工作表
- 可以'不要在代码中包含谷歌地图标记