0

我有一个PHP返回的文件JSON data。但我想执行一些javascript(谷歌分析代码)

这是我的代码:

<?php
   header('Content-Type: application/json');

   //GOOGLE ANALYTICS SCRIPT
   $js = "<script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
      })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

      ga('create', 'UA-XXXXXXXX-3', 'loopse.com');
      ga('send', 'pageview');

     </script>";

   echo $js;

   //some code to get data
   echo json_encode($data); 
?>

没有 js 代码一切正常,但我需要执行这个 js 来跟踪我的应用程序的 Web 服务。

--

解决方案

我通过 php 直接使用带有 POST-Requests 的 Google Analytics 找到了解决方案

文档:https ://developers.google.com/analytics/devguides/collection/protocol/v1/devguide

4

1 回答 1

0

为此,您需要将其注入您的页面。

当然,假设您将此特定代码拉入字符串“结果”,您可以执行以下操作:

var sTag = document.CreateElement('script');
sTag.innerHTML = result;
document.getElementByTagName('head')[0].appendChild(sTag);

类似的东西应该对你有用。

当然,您可以从上面列出的字符串中提取脚本标签……否则,这将失败。

扩大

好的,您似乎认为,通过从 PHP 发送它,它应该在到达客户端时简单地神奇地运行,而无需任何进一步的客户端更改。

永远不会是这样。

当此“代码”到达客户端时,客户端会将其视为“字符串”......因为这正是客户端的内容。

仅通过服务器端代码处理此问题将不起作用....接收网页必须配合执行代码。

在我上面的代码中,客户端将获取这些数据,并通过创建一个脚本元素将其注入自身,并将其用于该脚本元素的 innerHTML。

上面的代码示例应该是当您的代码发送到浏览器时客户端已经在查看的网页的一部分。

于 2013-08-23T08:32:21.657 回答