解析从 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 请求将数据正确发送到服务器,并且 clientid
、fname
、lname
在 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 请求将数据正确发送到服务器,并且 clientid
、fname
、lname
在 JavaScript 代码中定义。