如何在表单中生成动态隐藏值


how can i generate dynamic hidden values in a form

我有一个使用jquery和php构建的购物车,我需要为项目ID生成隐藏值。每次单击添加时,值都必须不同。

我不知道如何创建每次点击都会不同的动态值。

目前我用 php 创建了以下代码。

            <form method="post" action="" class="jcart">
            <? $unique = md5(uniqid()); ?>
                <input type="hidden" name="my-item-id" value="<?=$unique;?>" />
                <input type="submit" name="my-add-button" value="add to cart" class="button" />
            </form>

问题是,除非我刷新页面,否则我会得到相同的隐藏值。我可以做些什么来在不刷新页面的情况下获取不同的值。

带有日期 ?

Date.getTime();

您可以在 cookie 中存储一个简单的整数,并将其用作递增计数器的基础来生成该"唯一"值。只要您注意不要同时运行多个"添加"脚本,并确保cookie更新代码是防弹的,它应该可以解决唯一性问题。

如果使用 ajax 进行添加,请在 ajax 调用的返回中设置它

如果值可以是随机的,你可以使用像getTime()这样的javascript时间调用,它将获得自1972年以来的毫秒数。您不太可能获得重复的 ID,但您可以为其附加一个随机数以确保。

最好的方法是使用Ajax调用(通过jquery)到你的服务器,并从服务器获取ID。

我认为您可能需要使用 jQuery load() 函数并拥有一个为您生成 md5() id 的 PHP 页面,如下所示:

<script>$('input[type=hidden]').prev().load('ajax/uniqueId.php');</script>

jQuery将放置在"添加"按钮旁边。

你的PHP页面看起来像这样...

<?php
echo md5(uniqid());
?>

试试 uniqid() http://php.net/manual/en/function.uniqid.php