跨浏览器随机字符串(Math.random()* 1e32).toString(36)

时间:2015-09-17 08:26:24

标签: javascript

我使用SQL0206N "SYS" is not valid in the context where it is used. LINE NUMBER=15. SQLSTATE=42703 作为简单的随机字符串生成器。它非常简单,运行良好,满足了我的需求(用于id的时间随机等)

在chrome中,safari,firefox和ie (Math.random()*1e32).toString(36)生成如下数字:Math.random()*1e32 :-)

  • 在chrome,safari和firefox中,这样的数字被转换为字符串8.357963780872523e+31 - > (8.357963780872523e+31).toString(36)这正是我想要的。
  • 但是在ie11中,字符串结果为221fr2y11ebk4cog84wok

如何以跨浏览器的方式从6.936gwtrpf69(e+20)获取相同的字符串221fr2y11ebk4cog84wok

BTW:我从这个帖子中得到了这个随机字符串的想法:Random alpha-numeric string in JavaScript?

2 个答案:

答案 0 :(得分:3)

请记住<?php session_start(); include 'dbcon.php'; $page = 'index.php'; $toevoegen = $_GET['toevoegen']; if(isset($toevoegen)){ $query ="SELECT partnr, hoeveelheid FROM producten WHERE partnr='$toevoegen'"; $result = mysqli_query($connectie, $query); while($result_row = mysqli_fetch_assoc($result)){ if($result_row['hoeveelheid']!=$_SESSION['winkelwagen_'.$toevoegen]){ $_SESSION['winkelwagen_'.$toevoegen]+='1'; } } } ?> 返回0到1之间的值(不包括),并且JavaScript中的数字根据IEEE-754有53位尾数,获得随机整数的安全方法是

Math.random()

因此可以从

获取随机字母数字字符串
Math.random() * Math.pow(2, 54)

请注意,无法保证字符数,可以是1到11之间的任何字符,具体取决于随机值的数量级。

答案 1 :(得分:2)

尽管我可以看到,你不需要将随机数乘以如此大的数字。试试这个:

Math.random().toString(36).slice(2)

这样就够了吗?它是一个稍短的字符串,但它在所有浏览器中都是一致的(我测试过)。