Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php JSON文件并执行javascript_Php_Javascript_Json_Google Analytics - Fatal编程技术网

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在我上面的回答中进行了扩展。