在onClick中使用PHP变量

时间:2013-05-21 11:04:57

标签: php javascript onclick

我想知道我使用的这个标签有什么问题,它在onClick事件中使用了一个PHP变量。

在寻找其他答案后,我试图这样做,但由于某种原因,它不起作用。

<a onclick="setCartDisplay('<?=$prodID;?>'); return false;" href="prodtest2.php?action=add&id=<?=$id;?>">

以下是导致并包含无效链接标记的代码。

$prod_query = 'SELECT * FROM *****.*****';
        $prod_details = db_query_into_array_enhanced($mysql_connection, $prod_query);                       
        $count = count($prod_details);
        for($i = 0; $i < $count; $i++) 
            {?>     
            <?  $prodID = $prod_details[$i]['catID'];
                $prodDesc = $prod_details[$i]['shortDescription'];
                $prodPrice = $prod_details[$i]['rrp'];
            ?>
             <tr>
                 <td><?=$prodID;?></td>
                 <td><?=$prodDesc;?></td>
                 <td><?=$prodPrice;?></td>
                 <td><a onclick="setCartDisplay('<?=$prodID;?>'); return false;" href="prodtest2.php?action=add&id=<?=$prodID;?>">Add To Cart</a></td>

1 个答案:

答案 0 :(得分:1)

更好的解决方案是将来自php的id存储为锚元素的id,并在使用javascript后检索它。

从HTML 5开始,任何字符都对id有效(因为它是一个产品ID,我猜测不会有重复,如果只是将它添加为类而不是前缀)。这种方式还需要你在锚点上有一个类。

这让你不得不设置a标签的onclick,这在我看来总是一个坏主意,因为它将你的html和javascript混合在一起,想象一下你的这些链接中有1000个页面和功能名称已更改,您可以开始了解它为何成为更好的解决方案;

html;

<a id="<?= $prodID; ?>" class="product" href="prodtest2.php?action=add&id=<?= $id; ?>">

和javascript(Jquery)

$(".product").click(function() {
     var id = $(this).attr("id");
     setCartDisplay(id);
});

您的链接首先不起作用的原因是因为您从函数调用返回false,这会禁用click事件的默认行为。