我有一个返回JSON data
的PHP
文件。但我想执行一些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。
当您的代码发送到浏览器时,上面的代码示例应该是客户端已经在查看的网页的一部分。