2016-11-10 8 views
0

Szenario: Ereignisse Für Tracking (In der Warenkorb, Suchbegriffe, Produktansichten, etc.) aus einer Test-E-Commerce-Website (Opencart), JavaScript Funktion geschrieben in der Fußseite und diese Funktionen heißen bei Schaltflächenauslösern oder Seitenladungen.Probleme beim Parsen Variablen von PHP Javascript

Problem: Während Tracking Produktansicht Ereignis folgenden Code zur Produktseite hinzugefügt wird, Funktion captureProductView() aus Footer genannt, und Parameter clientid, fname, lname abgerufen werden aus getClientDetails();

<script> 
window.onload=function(){ 
    getClientDetails(); 
    captureProductView('<?php echo $product['product_id']; ?>', 
      '<?php echo $product['name']; ?>', '<?php echo $product['price']; ?>', 
      clientid, fname, lname); 
}; 
</script> 

Aber die Werte von PHP Variablen $product['product_id'], $product['name'], $product['price'] kann nicht analysiert werden, um die Skript-Tag, Hinweis:

Notice: Undefined variable: Produkt in /home/path.../product.tpl on line "

für alle jene drei Variablen

Ich habe versucht, diese Werte zuweisen zu javaScript-Variablen, die auch nicht funktionierten.

var p_id = "<?php echo $product['product_id']; ?>"; 
var p_name = "<?php echo $product['name']; ?>"; 

Gibt es eine Möglichkeit, wo ich die PHP-Variablen in den Script-Tag analysieren kann, so dass sie als Parameter an die Funktion übergeben werden können?

+1

Sind Sie sicher, dass die Variable '$ product' Werte enthält? Oder ist definiert? –

+0

PHP wird auf dem Server ausgeführt, bevor Informationen wie HTML, CSS oder JavaScript an den Client gesendet werden. – PHPglue

+0

@Rax Weber, Es hat Werte. Ich bin in der Lage, sie in einer Funktion zu übergeben, die auf einen Knopf onclick innerhalb des php Codes geschrieben wird. –

Antwort

1

Sie erhalten einen Fehler, weil das assoziative Array $product nicht im PHP-Skript definiert ist, das die Seite rendert.

Die erste Option besteht darin, das Skript so zu bearbeiten, dass $product['product_id'], $product['name'], $product['price'] definiert und mit den richtigen Werten zugewiesen werden.

Beachten Sie, dass Ihr erstes Code-Snippet einen Syntaxfehler aufweist, da Sie das einfache Anführungszeichen falsch verwenden. Sie müssen sowohl einzelne als auch doppelte Anführungszeichen verwenden:

captureProductView('<?php echo $product["product_id"]; ?>', 
        '<?php echo $product["name"]; ?>', 
        '<?php echo $product["price"]; ?>', 
        clientid, fname, lname); 

Sie eine zweite Option, die mit JavaScript die Werte aus der gerenderten Seite wird das Parsen.

captureProductView($('input[name=product_id]').val(), 
        $('h1').text().trim(), 
        $('.price').text().trim(), 
        clientid, fname, lname); 

Das funktionierte in einem Layout Ich habe versucht, kann aber auf einem anderen Layout geringfügige Änderungen müssen die entsprechenden Seitenelemente zum Ziel aus, die Werte zu holen.

Hinweis Ich habe jQuery verwendet, um den Wert aus den Seitenelementen abzurufen.

Der Wert für den Preis ist eine Zeichenfolge wie "Price: $24" und abhängig von Ihren Anforderungen möglicherweise weitere grundlegende Zeichenfolge Manipulation, um nur den Preiswert (24 im Beispiel) zu extrahieren.

Als Referenz habe ich versucht, die oben auf dieser Seite:

http://themes.webiz.mu/opencart/apparel/index.php?route=product/product&product_id=69

jedoch ich da als Layout stark diesen Ansatz entmutigen ändert sich die Funktion brechen.


Alle oben genannten zwei Optionen setzen voraus, dass captureProductView richtig die Daten an den Server mit einem AJAX-Request sendet und clientid, fname, lname sind in der JavaScript-Code definiert.

Verwandte Themen