嗨,大家好我试图一次创建无限的随机数,而不刷新整个页面。例如
5>在一秒之后用其他随机数替换5,例如10> 1秒后用8等随机数替换10,等等......
我设法让它工作,但数字不刷新。它只是在点击一下后停止,我必须重新点击它给我另一个随机值 这是我的代码
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&lt;&lt;我认为这是问题所在,但我不太确定
<?php
$i = 1;
while ($i < 2) {
$i += rand(1,5);
echo $i;
}
?>
我认为我的randomnumber.php并没有创建一个循环,但唯一的问题是我在循环中吮吸所以我遇到了问题,任何帮助都会很棒:)
答案 0 :(得分:1)
你的远程php代码现在正在做的是创建一个介于2到6之间的随机数。我不确定它为什么会循环。由于i
初始化为1,并且您向其添加至少1,因此在第一次迭代后它将始终为2或更多,从而防止第二次循环。你可以用
<?php echo rand(2,6); ?>
您还只对远程php文件进行了一次ajax调用。因此,您的页面正在加载,进行单个ajax调用,然后就完成了。
尝试添加
setTimeout(hello2,1000);
作为JavaScript中hello2()
函数的最后一行。这将导致函数每秒重复一次(再次调用PHP文件)。
我不确定这对于写入数据库会有好处。如果php文件每秒都要向数据库写一个新条目,那么你就会让你的数据库管理员头疼。将它们中的几个存储在一个数组中可能更为理想(可能是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文件以将结果存储在数据库中,然后重置数组。因此,减少服务器调用,减少数据库写入,提高性能。