JSON文件并执行javascript


JSON file and execute javascript

我有一个返回JSON dataPHP文件。但我想执行一些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服务。

--

解决方案

我发现了一个解决方案,使用谷歌分析与POST请求直接与php

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

要实现这一点,您需要将其注入到页面中。

当然,假设你把这个特定的代码拉成一个字符串"result",你可以做这样的事情:

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

这样的事情应该对你有用。

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

扩展

好吧,您似乎已经意识到,通过从PHP发送这个消息,它应该在到达客户端时神奇地运行,而不会对客户端进行任何进一步的更改。

这种情况永远不会发生。

当这个"代码"到达客户端时,客户端将把它当作一个"字符串"。。。因为这正是它对客户的意义。

完全由服务器端代码处理此问题将不起作用。。。。接收网页必须配合执行代码。

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

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