1

我正在处理我认为可能很简单的事情,即使用 jquery ajax 生成随机数。我有一个 index.php 轮询 generator.php 的随机数,代码如下

索引.php:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript">
setInterval(function(){
$.ajax({ url:'./generator.php', cache : false, success: function(data){
    document.write(data.foo);
}, dataType: "json"});
}, 3000);   
</script>

生成器.php:

<?php
$x = rand(10,100);
$array = array(
    'foo'  => $x    
);
echo json_encode($array);
?>

所以这在第一次加载时工作正常,它从 generator.php 获取随机数,但之后 index.php 继续加载但什么也没有得到,并且显示的数字保持不变。我在这里做错了什么?

4

3 回答 3

3

我认为问题是document.write(data.foo);。将其替换为:

document.getElementById('anId').innerHTML = data.foo;

并在您的 html 文档中,在该脚本之前添加一个 id 为“anId”的元素。

<div id="anId"></div>
<script type="text/javascript">
setInterval(function(){
$.ajax({ url:'./generator.php', cache : false, success: function(data){
    document.getElementById('anId').innerHTML = data.foo;
}, dataType: "json"});
}, 3000);   
</script>
于 2013-10-06T15:21:54.020 回答
0

我无法用您的确切代码复制您所描述的内容。它只是不断地将随机数附加到 body 元素。你的 HTML 是什么样的?

此外,如果您只想要一个介于 10 和 100 之间的随机数,则无需 PHP 即可处理。

这是我想出的:

setInterval(function(){
  var random = Math.floor( Math.random() * 90 ) + 10;
  $('body').text(function(i,val){
    return val + random;
  });
}, 3000);

这是一个演示:

http://jsbin.com/evOtuqA/2/edit

于 2013-10-06T15:17:31.447 回答
0

为什么不使用 Javascript 生成随机数:

function randomRange(min, max) {
return ~~(Math.random() * (max - min + 1)) + min
}

或者使用:

setInterval.randomnumber()
function randomnumber(){
$.ajax({
        dataType: "json",
        type: "POST",
        url: ('./generator.php'),
        success: function(data) {return(data)}
    }); }
于 2013-10-06T15:18:45.160 回答