如何在javascript中生成唯一id?

如何在javascript中生成唯一id?,javascript,jquery,Javascript,Jquery,我想在网站上记录流量。在每次点击时,我想生成唯一的Id,该Id将存储在数据库中。 为了生成唯一的Id,我写了下面的代码,但有时我会在数据库中得到相同的条目 timingVar = 'load_'+Date.now()+'_'+uniqueid(); //function used to generate unique number// function uniqueid() { var ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyzA

我想在网站上记录流量。在每次点击时,我想生成唯一的Id,该Id将存储在数据库中。 为了生成唯一的Id,我写了下面的代码,但有时我会在数据库中得到相同的条目

 timingVar = 'load_'+Date.now()+'_'+uniqueid();

//function used to generate unique number//
function uniqueid() {
    var ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    var ID_LENGTH = 8;
    var rtn = '';
    for (var i = 0; i < ID_LENGTH; i++) {
      rtn += ALPHABET.charAt(Math.floor(Math.random() * ALPHABET.length));
    }
    return rtn;
}
timingVar='load_u'+Date.now()+''u'+uniqueid();
//用于生成唯一编号的函数//
函数uniqueid(){
变量字母表='0123456789abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyz';
变量ID_长度=8;
var rtn='';
对于(变量i=0;i
可以将数据库配置为对列使用自动生成的唯一值(主要是序列号)。您不必依赖客户端上的javascript来完成此操作。

如果您在服务器上生成此ID,这将更加合适。为每个用户设置一个会话,如果该用户是第二次来,则记录它。我必须使用java脚本作为唯一id,我的代码有什么问题。我的代码可以生成重复的id?您的代码的问题很简单,它不能防止重复,并且没有足够大的随机场。这就是为什么我们有健壮的UUID算法。36^8远不足以期望它的随机选取是唯一的,尤其是在浏览器中使用不完善的伪随机数生成器时。@PraveenD如果没有更多信息,它可能不是您唯一的id代码,而是您如何使用它。您已经有了日期。现在id中有了日期,所以需要在完全相同的时间发出两个请求并获得相同的随机数?不太可能(但可能,这就是为什么您应该查看TJCrowder的链接)。然而,我认为你会发现,即使你有一个真正唯一的ID,你仍然会在数据库中得到重复的ID。这是另一个XY问题。你也记录IP地址吗?副本是否来自同一IP?最重要的是,您的
timingVar
?(如问题中所述)。本质上,我是说,您可能会在发送timingVar之前覆盖它,因此第一次调用会得到第二次调用的值,您会得到一个副本。这可能是由全局var或对关闭的误解造成的。如果没有所有的代码,就不可能确定。这里我想从JavaScript本身生成唯一的id。我的代码有什么问题?