我正在创建一个随机引用生成器并将数据存储在MySQL数据库中。 代码正在运行,但每次单击时它都会继续获取同一行而不是新的随机行。但是,如果我等待30秒并再次点击,它就可以正常工作。我只是希望它能够立即点击。
<script type="text/javascript">
$(document).ready(function() {
$(".display").click(function() {
$.ajax({ //create an ajax request to load_page.php
type: "GET",
url: "display.php",
dataType: "html", //expect html to be returned
success: function(response){
$("#responsecontainer").html(response);
setTimeout(response, 5);
//alert(response);
}
});
});
});
我怀疑超时功能无法正常工作,因为获取新行需要更长时间。我使用Rand()的命令来获取随机行。我的PHP看起来像这样:
<?php
include("connect.php");
$finds = "SELECT * FROM citater5 ORDER BY RAND() LIMIT 1";
$result = mysql_query($finds, $con) or trigger_error(mysql_error()." ".$finds);
while($data = mysql_fetch_row($result))
{
echo "<aside class=\"citatout\">";
echo "<div id=\"paradiso\" class=\"text-vertical-center-q\">";
echo utf8_encode("<h1 class=\"animated fadeIn\" align=center>$data[0]</h1>");
echo utf8_encode("<h2 class=\"animated fadeIn\" align=center>$data[1]</h2>");
echo "</div>";
echo "</aside>";
}
?>
为什么每次都没有获取新行?
答案 0 :(得分:1)
不太确定ORDER BY RAND()是否正常工作。 - 我几乎没有使用PHP几年,但我可能会尝试这样的事情:
<?php
include("connect.php");
$totalrows = mysql_num_rows(mysql_query("SELECT * FROM citater5"));
$finds = "SELECT * FROM citater5 WHERE id='".rand(1,$totalrows)."'";
$result = mysql_query($finds, $con) or trigger_error(mysql_error()." ".$finds);
$data = mysql_fetch_row($result);
echo "<aside class=\"citatout\">";
echo "<div id=\"paradiso\" class=\"text-vertical-center-q\">";
echo utf8_encode("<h1 class=\"animated fadeIn\" align=center>$data[0]</h1>");
echo utf8_encode("<h2 class=\"animated fadeIn\" align=center>$data[1]</h2>");
echo "</div>";
echo "</aside>";
?>
并且 - 因为你只得到1个结果,所以不需要经过一段时间()。
希望这有点帮助。
答案 1 :(得分:0)
与其他人一样,rand()
可能不是最好用的,但我不认为这是导致你的问题的原因。如果结果在短时间内显示相同的结果,则很可能会缓存结果。
您可以尝试关闭缓存:
$.ajaxSetup({ cache: false });
或者使用随机数或时间戳在ajax调用中附加URL。