将变量从php解析为javascript时出现问题 - javascript

场景:用于跟踪事件(添加到购物车,搜索字词,
  测试电子商务网站(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代码中定义了clientidfnamelname

提交初始化后删除某些帖子数据 - javascript

在初始化提交之后但在将数据发送到处理页面之前,是否可以过滤$ _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 = …