场景:用于跟踪事件(添加到购物车,搜索字词,
测试电子商务网站(Opencart)中的产品视图等),JavaScript
函数写在页脚页面中,这些函数被称为
在按钮触发或页面加载时。
问题:
将跟踪产品视图事件的以下代码添加到“产品”页面时,从页脚调用函数captureProductView()
,并从clientid, fname, lname
检索参数getClientDetails();
<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']
中的值解析为脚本标记,请注意:
注意:未定义变量:product in
/home/path.../product.tpl行29“
对于所有这三个变量
我尝试将这些值分配给javaScript变量,该变量也不起作用。
var p_id = "<?php echo $product['product_id']; ?>";
var p_name = "<?php echo $product['name']; ?>";
有没有一种方法可以将php变量解析为script标记,以便可以将它们作为参数传递给函数?
参考方案
您会收到错误消息,因为在呈现页面的PHP脚本中未定义关联数组$product
。
您的第一个选择是编辑脚本,以便定义$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的值是一个类似于"Price: $24"
的字符串,根据您的需要,可能需要进一步的基本字符串操作以仅提取价格值(在示例中为24
)。
作为参考,我在此页面上尝试了以上操作:
http://themes.webiz.mu/opencart/apparel/index.php?route=product/product&product_id=69
但是,我强烈不鼓励这种方法,因为随着布局的改变,功能可能会中断。
以上所有两个选项均假定captureProductView
通过AJAX请求正确地将数据发送到服务器,并且在JavaScript代码中定义了clientid
,fname
,lname
。
在初始化提交之后但在将数据发送到处理页面之前,是否可以过滤$ _POST表单数据?我想象过程的方式:提交->收集$ _POST数据->发送数据我想做的事:提交->收集$ _POST数据->删除某些元素->发送数据这样就不必更改处理页面以过滤掉不希望接收的元素了吗? javascript大神给出的解决方案 当然可以,您可以在JS …
Javascript IF语句 - javascript嗨,我有这段代码可以正常工作,并将两个日历显示为一个日历。我还有一个php变量$login_session,其中包含登录电子邮件地址的用户。关于如何显示[email protected]日历的任何想法(伪代码)IF $login_session == "[email protected]…
将字符串值添加到php / javascript - javascript您好,我有一些代码需要在其中插入一些字符串值,但是每次我输入字母时,脚本都无法正常工作。<script type="text/javascript"> "use strict"; var values = [1,2,3,4,5,6,7,8,9]; /*add string values here*/ var…
执行onclick时获得意外令牌 - javascript我正在使用onclick事件从PHP调用JS函数。这是我的代码:我在一个函数中,因此我需要通过PHP来完成它,因为然后我会返回:$html = '<input type="checkbox" checked value="1" id="setGetSku" name="se…
使用JS和PHP更改弹出窗口背景图像 - javascript我有一个JS函数:function zoom(now) { document.getElementById("popup").style.display = "block"; document.getElementById("photos").style.backgroundImage = …