解析从 php 到 javascript 的变量时出现问题

Problems in parsing variables from php to javascript

Scenario: For tracking events(Add to cart, Search terms, Product views, etc) from a test e-commerce website(Opencart), JavaScript function is written in the footer page and these functions are called at button triggers or page loads.

问题: 在跟踪产品查看事件代码添加到产品页面时,从页脚调用函数 captureProductView(),并从 getClientDetails();

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

但是php变量$product['product_id']$product['name']$product['price']的值无法解析到脚本标签中,留下Notice:

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

对于所有这三个变量

我尝试将这些值分配给 javaScript 变量,这也没有用。

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

有没有一种方法可以将 php 变量解析为脚本标记,以便将它们作为参数传递给函数?

您收到错误消息,因为关联数组 $product 未在呈现页面的 PHP 脚本中定义。

您的第一个选择是编辑脚本,以便定义 $product['product_id']$product['name']$product['price'] 并为其分配正确的值。

请注意,您的第一段代码存在语法错误,因为您误用了单引号。您必须同时使用单引号和双引号:

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

您有第二个选项,即使用 JavaScript 呈现页面中的值进行解析。

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

这适用于我尝试过的布局,但可能需要对不同的布局进行细微更改,以定位适当的页面元素以从中获取值。

注意我使用 jQuery 从页面元素中检索值。

价格的值是一个类似于 "Price: " 的字符串,根据您的需要,可能需要进一步的基本字符串操作以仅提取价格值(示例中的 24)。

作为参考,我在此页面上尝试了以上内容:

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

但是我强烈反对这种方法,因为随着布局的变化,功能可能会中断。


以上两个选项均假定 captureProductView 通过 AJAX 请求将数据正确发送到服务器,并且 clientidfnamelname 在 JavaScript 代码中定义。