0

我正在使用 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 调用的示例。

4

5 回答 5

1

我建议代替Math.random(),使用:

(Math.random() + '').replace('.','');
于 2012-12-12T20:52:27.530 回答
1

Math.random()返回一个 和 之间的值01要获得 和 之间的数字0max您需要将其乘以max。这应该这样做:

Math.floor(Math.random() * 1e16) // 1e16 == 10000000000000000
于 2012-12-12T20:59:39.950 回答
0

也许更容易和更常见......如果你不需要使用 Math.random()

 + (new Date()).getTime();
于 2012-12-12T20:55:32.417 回答
0

为什么不使用new Date().getTime()并避免所有麻烦

于 2012-12-12T20:55:36.773 回答
0

其他答案是正确的——但我在我的代码中忽略了一个明显的类型-o。我写的链接:

foo.php&arg=123

应该

foo.php?arg=123

enter code here

更新后,找不到文件错误已解决。

感谢您提供有关修复数学/小数问题的建议 - 现在不需要,但知道有用。

于 2012-12-12T21:02:39.283 回答