我正在使用Math.random生成在ajax调用中传递的随机字符串。问题是生成的字符串包含一个小数,服务器将其解释为file.ext(当然不存在)。
来自http.log:
File does not exist: /path/to/site/foo.php&arg=123&randval=0.5678719817071954, referer: http://site/bar.php?arg=123
用于生成链接的Ajax:
$(document).ready(function()
{
$(\"#placeholder\").load(\"/foo.php?arg=123\");
var refreshId = setInterval(function()
{
$(\"#placeholder\").load('/foo.php?arg=123&randval='+ Math.random());
}, 5000);
$.ajaxSetup({ cache: false });
});
我最终想要的是:
foo.php&arg=123&randval=05678719817071954
除了确保我没有使用页面的缓存版本之外,不使用参数randval
。它可能不需要,但这是我用来设置jquery ajax调用的一个例子。
答案 0 :(得分:1)
我建议代替Math.random()
使用:
(Math.random() + '').replace('.','');
答案 1 :(得分:1)
Math.random()
返回0
和1
之间的值,以获取0
和max
之间的数字,您需要将其乘以max
。这应该做:
Math.floor(Math.random() * 1e16) // 1e16 == 10000000000000000
答案 2 :(得分:0)
如果您不需要使用Math.random()
,可能更容易也更常见 + (new Date()).getTime();
答案 3 :(得分:0)
为什么不使用new Date().getTime()
并避免所有麻烦
答案 4 :(得分:0)
其他答案是正确的 - 但我在代码中忽略了一个明显的类型o。我写的链接:
foo.php&arg=123
应该是
foo.php?ARG = 123
enter code here
更新后,找不到文件错误。
感谢有关修复数学/小数问题的建议 - 现在不需要,但有用的知识。