2016-04-04 5 views
0

Ich verwende RSForm, um eine Buchungsmaschine zu erstellen, die die vom Benutzer übermittelten Formulardaten an die Buchungsmaschine eines Hotels weiterleitet. Etwas hat sich irgendwo geändert, und jetzt funktioniert das Formular nicht. Wenn ich auf „Preisvergleich“ nach meinem Check-in und out, und die Anzahl der Erwachsenen und Kinder Auswahl, gibt Firebug diesen Fehler und sonst nichts passiert:Variablenname ist kein definierter Fehler, aber tatsächlich definiert

ReferenceError: be_link is not defined http://vistacayholidays.com/ Line 195

Dies ist die JavaScript:

<script> 
function postIHForm(oForm){ 
    var qs = ""; 

    qs = qs + "?hotelid=" + document.getElementById("HotelID").value; 
    if (oForm.LanguageID) { qs = qs + "&languageid=" + oForm.LanguageID.value} 
    qs = qs + "&datein=" + document.getElementById("txtcal5_0").value; 
    if (document.getElementById("Length")) { qs = qs + "&length=" + document.getElementById("Length").value } 
    if (document.getElementById("txtcal5_1")) { qs = qs + "&dateout=" + document.getElementById("txtcal5_1").value } 
    qs = qs + "&Adults=" + document.getElementById("Adults").value; 
    if (document.getElementById("Children")) { qs = qs + "&children=" + document.getElementById("Children").value } 
     var target = 'https://booking.ihotelier.com/istay/istay.jsp' + qs; 
     ga(function(tracker) { 
      var linker = new window.gaplugins.Linker(tracker); 
      var be_link = linker.decorate(target); 
     }); 
     window.open(be_link); 
} 
</script> 

Soweit ich das beurteilen kann, sollte alles funktionieren. Hier ist ein Pastebin der Homepage, um den Tracking-Code zu sehen: http://pastebin.com/x0vcmMds

Ich habe versucht, die be_link Linien herauszunehmen und immer noch nichts passiert, aber ich bekomme auch keinen Fehler. Ich kenne absolut kein JavaScript und versuche, die Seite wieder in Gang zu bringen. Fehle ich etwas offensichtlich offensichtlich hier?

+0

Ihre Variable definiert ist, aber es definiert ist ** ** innerhalb dieser Rückruf Funktion übergeben an 'ga()'. – Pointy

+0

Sie definieren 'be_link' innerhalb einer Funktionsdefinition, es ist außerhalb nicht sichtbar, so dass zumindest die Fehlermeldung korrekt ist. –

Antwort

0

Deklarieren Variable be_link auf dem gleichen Niveau von window.open (be_link)

var be_link = "";  
    ga(function(tracker) { 
     var linker = new window.gaplugins.Linker(tracker); 
     be_link = linker.decorate(target); 
    }); 
    window.open(be_link); 

oder versuchen Sie mit:

ga(function(tracker) { 
     var linker = new window.gaplugins.Linker(tracker); 
     var be_link = linker.decorate(target); 
     window.open(be_link); 
    }); 
+0

Dies behebt das Problem mit dem Gültigkeitsbereich, aber ob es funktioniert oder nicht hängt davon ab, ob diese 'ga()' Funktion diese Funktion synchron aufruft oder nicht. – Pointy

+0

Mal sehen, ob das reicht ... –

+0

Der erste Vorschlag funktionierte für mich in Chrome, IE und Firefox. Vielen Dank! – am2781

Verwandte Themen