0

Math.random を使用して、ajax 呼び出しで渡されるランダムな文字列を生成しています。問題は、生成された文字列に 10 進数が含まれており、サーバーがこれを 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()0はとの間の値を返します。 の間の1数値を取得するには、を掛ける必要が0あります。これは次のことを行う必要があります。maxmax

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

他の答えは正しいです-しかし、私は自分のコードで明らかなタイプoを見落としました。私が書いていたリンク:

foo.php&arg=123

する必要があります

foo.php?arg=123

enter code here

更新したら、ファイルが見つからないというエラーが解決されました。

数学/小数の問題を修正するための提案をありがとう - 今は必要ありませんが、知っておくと便利です。

于 2012-12-12T21:02:39.283 に答える
0

おそらくより簡単でより一般的です... Math.random() を使用する必要がない場合

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

new Date().getTime()すべての面倒を使用して回避してみませんか

于 2012-12-12T20:55:36.773 に答える