Skip to main content
 首页 » 编程设计

google-analytics之使用 Google Analytics 在位置 0 处的 JSON 中的意外 token G

2025年12月25日20Leo_wl

我正在尝试在我的工作 Angular 5 项目中使用 Google Analytics 的测量协议(protocol)。我将 Google Analytics 通用代码放入 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> 

服务发起 http 调用
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; 
  } 
 
} 

问题是谷歌返回一个奇怪的错误,我不知道这意味着什么,也不知道这个错误的原因。我做的不好吗?

来自谷歌的错误:

ERROR

HttpErrorResponse {headers: HttpHeaders, status: 200, statusText: "OK", url: "https://www.google-analytics.com/collect?v=1&t=...", ok: false, …}

error : {error: SyntaxError: Unexpected token G in JSON at position 0 at JSON.parse () at XMLHttp…, text: "GIF89a�����,D;"}



似乎服务器正在尝试 JSON 解析 GIF 图像。在文档中找不到任何内容,Google 没有显示任何信息。

非常感谢你的帮助。

请您参考如下方法:

用于数据收集的 Google Analytics(分析)端点返回一个透明的 gif 文件(它会为除服务器错误之外的所有内容返回 200 状态,因此您无法使用它来查看您的数据是否被实际跟踪)。无法将 gif 解码为 JSON。

如果你想要一个 JSON 响应,你需要使用 endpoint for the GA debugger (google-analytics.com/debug/collect)。如果您的有效负载有效,那将提供信息,但不会跟踪调用。