javascript - 无刷新页面的PHP无限随机数生成器

  显示原文与译文双语对照的内容
0 0

我们在尝试一次创建无限随机数,而不刷新整个页面。 例如

在1 秒后,用其他随机数如2 秒替换 5,用像 10等随机数替换0,然后。

我设法使它工作,但数字不刷新。 它只是在 1点击后停止,我必须单击它,这是我的另一个随机值,这是我的代码

Homepage.php


<html>
<head>
<script src="ajax.js"></script>
<script>
var HTTP = loadXMLDoc();
var submitEvent = document.getElementById("submit-button").onclick = function(){
hello2(HTTP);
};
</script>
</head>
<body>
<div id="randomNum">0</div>
<?php
 echo"<form action='randomnumber.php' method='post' style='display: inline-block'>
 <input id='submit-button' type = 'button' value='login' id='submit'/>";
 echo"</form>";
?>
</body>
</html>

Ajax.js


function loadXMLDoc()
{
var xmlhttp;
if (window.XMLHttpRequest)
 {
 xmlhttp=new XMLHttpRequest();
 }
else
 {
 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
 }
 return xmlhttp;
}

 var HTTP = loadXMLDoc();

 function hello2(){

 var url ="randomnumber.php";


 HTTP.onreadystatechange=function()
 {
 if (HTTP.readyState==4 && HTTP.status==200)
 {
 document.getElementById("randomNum").innerHTML=HTTP.responseText;
 }
 };

 HTTP.open("POST", url, true);
 HTTP.send();
}

我认为这个问题就是 randomnumber.php <<,但我不太确定


<?php
$i = 1;

while ($i <2) {
 $i += rand(1,5);
 echo $i;
}
?>

我认为我的randomnumber.php 没有创建循环,但是唯一的问题是我吸引了循环,所以我有问题。

时间: 原作者:

0 0

你的远程php代码目前正在做的是在 2和 6之间创建一个随机数。 我不确定为什么会在循环中。 由于 i 在 1初始化,并且在第一次迭代之后至少添加 1个,因这里它将始终为 2或者更多。 你可以用


<?php echo rand(2,6);?>

你也只对远程php文件进行单一的ajax调用。 所以页面正在加载,只进行一个ajax调用,然后就完成了。

尝试添加


setTimeout(hello2,1000);

作为 hello2() 函数在JavaScript中的最后一行。 这将导致函数在每次( 对PHP文件进行另一次调用) 重复时重复。

我不确定这是否适合写到数据库。 如果php文件每秒将向数据库写入一个新条目,那么你将为数据库管理员提供头痛。 在 array ( 可能 100) 中存储几个文件,然后调用不同的PHP文件将这些数字写到数据库中可能更理想。

在这种情况下,你可以完全跳过第一个调用( 使你的服务器工作得更少) 。 使用JavaScript创建的整数


var randomNum = Math.floor(Math.random()*5)+2

Math.random() 在 0和 1之间创建一个随机浮点。 乘以 5使它成为 0和 5之间的随机浮点。 Math.floor() 将值向下拖动到整数( 0和 4之间),以便将 2添加到结果,使它的在 2和 6之间。

这将把所有工作放在客户端浏览器上,这样你就不会遇到慢连接的问题。 JavaScript可以将结果存储为 array,定期调用PHP文件将结果存储在数据库中,然后重置 array 。 因此,服务器调用更少,数据库写入更少,性能更好。

...