2016-07-17 5 views
1

Bitte helfen Sie mir, weil ich feststecke.Ajax POST XMLHttpRequest zu DataLayer über Google Tag Manager

Zunächst einmal bin ich ein Neuling in Ajax und Javascript.

Also, was ich habe:

  1. Ich habe AJAX Rechner Formular auf meiner Website.
  2. Ich möchte Eingabe-, Dropdown- und Auswahlfelder und deren Werte in Google Analytics verfolgen.
  3. Ich habe Google Tag Manager installiert und implementiert.
  4. Ich habe benutzerdefinierte HTML-Tag Brennen erstellt, wenn DOM Ausgang zu schieben data bereit ist:

    <script> 
    (function() { 
    var xhrOpen = window.XMLHttpRequest.prototype.open; 
    var xhrSend = window.XMLHttpRequest.prototype.send; 
    window.XMLHttpRequest.prototype.open = function() { 
        this.method = arguments[0]; 
        this.url = arguments[1]; 
        return xhrOpen.apply(this, [].slice.call(arguments)); 
    }; 
    window.XMLHttpRequest.prototype.send = function() { 
        var xhr = this; 
        var xhrData = arguments[0]; 
        var intervalId = window.setInterval(function() { 
         if(xhr.readyState != 4) { 
          return; 
         } 
         dataLayer.push({ 
          'event': 'ajaxSuccess', 
          'eventCategory': 'AJAX ' + xhr.method, 
          'eventAction': xhr.url + (xhr.method == 'POST' && xhrData ? ';' + xhrData : ''), 
          'eventLabel': xhr.responseText 
         }); 
         clearInterval(intervalId); 
        }, 1); 
        return xhrSend.apply(this, [].slice.call(arguments)); 
    }; 
    })(); 
    </script> 
    

5.Und Ich bin sehr glücklich, weil ich endlich die Daten in data.layer

bekam
{ 

event: 'ajaxSuccess', 

eventCategory: 'AJAX POST', 

eventAction:'http://mylocalhosting.local/calculator/ajax_statistic_track;property_value=20000&state=1&property_type=1&first_home_buyer=2&are_you_purchasing=2&url=http%3A%2F%2Fnew.sharewood.ru%2Fembed.html', 

eventLabel:'property_value=20000&state=1&property_type=1&first_home_buyer=2&are_you_purchasing=2&url=http%3A%2F%2Fnew.sharewood.ru%2Fembed.html' 

} 
  1. Und schließlich die Frage: Wie kann ich spaltete sich die Daten in URL empfangen mit Strings? Ich verstehe, dass ich neue Auslöser in GTM erstellen und den Code bearbeiten sollte. Aber wie? ? JSON.parse JSON.stringify ?:

Was ich in der Ausgabe haben wollen:

{ 

    event: 'ajaxSuccess', 

    eventCategory: 'AJAX POST', 

    eventAction:'http://mylocalhosting.local/calculator/ajax_statistic_track;property_value=20000&state=1&property_type=1&first_home_buyer=2&are_you_purchasing=2&url=http%3A%2F%2Fnew.sharewood.ru%2Fembed.html', 

    eventLabel:'property_value=20000&state=1&property_type=1&first_home_buyer=2&are_you_purchasing=2&url=http%3A%2F%2Fnew.sharewood.ru%2Fembed.html' 

propertyValue: '20000' 

state: '1' 

propertyType: '1' 

firstHomeBuyer: '2'  
     } 

Antwort

0

Da geben Sie Ihre Daten als URL können Sie GTM das Parsen behandeln lassen. GTM hat eine "url" -Typ-Variable, die auch Teile einer URL zurückgeben kann, einschließlich eines Wertes, der durch einen Abfrageparameter identifiziert wird. Zuerst erstellen Sie eine DataLayer-Variable, die das EreignisAction liest (im URL-Format). Dann erstellen Sie eine neue Variable vom Typ "URL", setzen den Komponententyp auf den Abfrageschlüssel, um eine Abfragevariable zu extrahieren, setzen den Namen des Abfrageparameters und wählen in "Weitere Einstellungen" die Variable dataLayer mit dem Parameter eventAction als "source" -Parameter. Dies sollte so aussehen, den Wert für „property“ (Wiederholung für die anderen Abfrageparameter in der URL) zurückzukehren:

enter image description here

+0

Danke, aber diese wird nicht funktionieren, weil Parameter in eventAction nicht in URL. Ich kann den Screenshot nicht hinzufügen, aber Sie können sehen, wie das funktioniert: 'eventAction': xhr.url + (xhr.method == 'POST' && xhrData? ';' + XhrData: ''), wahrscheinlich habe ich einen Fehler gemacht in deiner Frage. Und gerade habe ich bemerkt, dass die Parameter tatsächlich getrennt von der URL übergeben werden. –

+0

Sie haben die Antwort nicht richtig gelesen. Dies funktioniert, weil der URL-Variablentyp seinen Eingabewert nicht in der Adressleiste des Browsers benötigt, sondern nur, dass er wie eine URL aussieht, was Ihre eventCategory tut. Wie Sie im Screenshot sehen können, können Sie den Eingabewert für jede Variable festlegen. –

+0

Mach es noch einmal. Und nein, das ist keine Arbeit. –

Verwandte Themen