将包含单个代码的php字符串值传递给JavaScript函数

Passing a php string value containing single codes to JavaScript function

本文关键字:值传 JavaScript 函数 字符串 php 包含单 代码      更新时间:2023-09-26

我知道这个问题已经被问过很多次了,但是没有一个解决方案适合我。我是JS新手,急需帮助

我在php中有一个字符串值包含来自数据库的值,即

$row['Product_name'] // Contains value --> Oxford Club Men's Solid Casual Shirt

我想传递这个值在addToCart() JavaScript函数的按钮点击,可能是像onclick="addToCart()"和传递$row['Product_name'];作为参数

但是这给了我一个错误Uncaught SyntaxError: Invalid or unexpected token

我甚至尝试使用json,但同样的问题,有人能给这个更好的解决方案

 <?php foreach ($popularProducts as $row) {
                    $data = array(
                        'id' => $row["product_id"],
                        'name' => $row["product_name"],
                        'image' => '1.jpg',
                        'price' => $row["product_selling_price"],
                        'discount' => 0,
                        'qty' => 1
                        );
  ?>
 <div class="ratings">
     <p class="pull-right items">
        <a onclick='addToCart(<?php echo json_encode($data); ?>)' data-toggle="tooltip" data-placement="top" title="" data-original-title="Add to cart">
            <span class="glyphicon glyphicon-shopping-cart"></span> 
         </a>
      </p>
</div>
<?php
    }
 ?>

和函数

function addToCart(var jsonArray){
     alert(jsonArray);
 }

点击时,会出现错误

要在PHP和Javascript之间传递信息,您需要将PHP变量回显到HTML文档中。

的例子:

<input type="submit" onclick="addToCart('<?= $row['Product name'] ?>')" />

这将导致返回到HTML文档:

<input type="submit" onclick="addToCart('Some fancy product')" />

当然,回显PHP变量并不仅限于在"onclick"属性中回显它们。如果需要的话,也可以在<script>标记中回显它们。

<script>var thisItem = "<?= $ItemName ?>";</script>

首先,如果你使用jquery,你可以传递产品名称作为数据。读

   <button id="prod" data-name="<?php echo $row['Product_name']; ?>">AAA</button>

,然后使用click函数检索数据,如下所示:

$('#prod').click(function(){
    var n = $(this).data('name');
  console.log(n);
});

下面是jsfiddle中的一个工作演示。

你甚至可以将整个数组/对象存储为json:

<button class="prod" data-product="<?php echo json_encode($row); ?>">AAA</button>

并检索为:

$('.prod').click(function(){
    var obj = $.parseJSON($(this).data('product'));
  console.log(obj);
  console.log(obj.name); //access all your db_columns as properties
});