Google analytics 使用Google Analytics在位置0处的JSON中出现意外标记G
我试图在我的Angular 5项目中使用Google Analytics的测量协议。我将Google Analytics通用代码放在Google analytics 使用Google Analytics在位置0处的JSON中出现意外标记G,google-analytics,angular5,measurement-protocol,Google Analytics,Angular5,Measurement Protocol,我试图在我的Angular 5项目中使用Google Analytics的测量协议。我将Google Analytics通用代码放在index.html中,并对该服务进行如下http调用 index.html <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gt
index.html
中,并对该服务进行如下http调用
index.html
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-XXXXXXXX-Y', {
'cookieDomain': 'none'
});
// console.log(window.dataLayer);
</script>
问题是谷歌返回了一个奇怪的错误,我不知道这意味着什么,也不知道这个错误的原因。我的实现是否很糟糕
来自谷歌的错误:
错误
HttpErrorResponse{headers:HttpHeaders,状态:200,状态文本:“OK”,url:“…”,OK:false,…}
错误:{error:SyntaxError:JSON中的意外标记G位于XMLHttp…的JSON.parse()位置0处,文本:“GIF89a�����,D、 “}
似乎服务器正在尝试JSON解析GIF图像。在文档中找不到任何内容,谷歌也没有显示任何信息
非常感谢您的帮助。Google Analytics endpoint for data collection返回一个透明的gif文件(对于除服务器错误以外的所有内容,它都返回200状态,因此您无法使用此文件查看您的数据是否被跟踪)。gif不能解码为JSON
如果需要JSON响应,则需要使用(google analytics.com/debug/collect)。如果您的有效负载有效,它将提供信息,但不会跟踪呼叫。谢谢您的帮助。但我不知道如何将订阅从HttpClient转换为映像。我试图返回一个
可观察的
,但仍然得到相同的错误。我对angular不太了解,我可以告诉你,你不能JSON.stringify gif图像(也就是说,这不是GA错误消息,这只是一个Javascript错误),这就是你所要求的。也许你应该编辑/修改你的问题(或者问一个新问题)。JSON stringify是在得到错误后添加的。我正试图把图像弄脏。非常感谢你的帮助。
import { Injectable } from '@angular/core';
import { HttpClient, HttpParams, HttpHeaders } from '@angular/common/http';
import { DataService } from './Data.service';
@Injectable()
export class AnalyticsService {
private anUID = 'UA-XXXXXXXX-Y';
private analyticsURL = 'https://www.google-analytics.com/collect?';
constructor(private http: HttpClient, private datos: DataService) { }
public pageViewLista(): void {
this.http.get(
this.setScreenViewUrl(
encodeURI('Lista de empresas'))).subscribe((data) => {
console.log('Received data from GAnalytics: ' + JSON.stringify(data));
}
);
}
protected setScreenViewUrl (pantalla: string): string {
const constructUrl = `${this.analyticsURL}v=1&t=screenview&tid=${this.anUID}&cid=${this.datos.id}&an=${this.datos.app}&dt=${pantalla}&cd=${pantalla}`;
return constructUrl;
}
}