Php JSON文件并执行javascript
我有一个Php JSON文件并执行javascript,php,javascript,json,google-analytics,Php,Javascript,Json,Google Analytics,我有一个PHP文件,它返回JSON数据。但是我想执行一些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
PHP
文件,它返回JSON数据
。但是我想执行一些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);
?>
要使其正常工作,您需要将其插入到页面中
当然,假设您正在将此特定代码拉入字符串“result”,您可以执行以下操作:
var sTag = document.CreateElement('script');
sTag.innerHTML = result;
document.getElementByTagName('head')[0].appendChild(sTag);
这样的事情应该适合你
当然,您可以从上面列出的字符串中提取脚本标记。。。否则,这将失败
扩展
好的,您似乎认为,通过从PHP发送这个消息,当它到达客户端时,它应该可以神奇地运行,而不需要任何进一步的客户端更改
这种情况永远不会发生
当这个“代码”到达客户端时,客户端只会将其视为一个“字符串”。。。因为这正是它对客户的意义
仅通过服务器端代码处理此问题将不起作用。。。。接收网页必须配合代码的执行
在我上面的代码中,客户端将获取该数据,并通过创建脚本元素将其注入自身,并将其用于该脚本元素的innerHTML
上面的代码示例应该是网页的一部分,当您的代码被发送到浏览器时,客户端已经在查看该网页。您没有发送JSON,而是发送文本/htmlIt,看起来像ga('send','pageview')
将向您发送一些格式化的html,这些html与您从$data
获得的JSON无法很好地混合。你能在不使用AJAX的情况下查看页面输出来阐明这一点吗。。。JSON真的不是这个工作的合适工具。。。只需发送文本/纯文本。无论如何,您都将在客户端插入它。不幸的是,数据必须是JSON格式,并且带有http头application/JSON。我认为这就是问题所在,我不能同时使用application/json
和运行javascript代码。一个有效的解决方案是使用googleanalytics
和Post请求
并用PHP发送此请求。我编辑我的问题。问题是javascript
没有运行。即使我用echo写它,或者直接写在?>
@RémiSantos Right后面。。。上面看到的代码是什么?添加客户端正在看到的html页面。如果您只在服务器端,这根本不起作用。@RémiSantos在我上面的回答中进行了扩展。