我有一个在1-20之间生成10个随机和唯一数字的函数。
function contain($prevItems, $number) {
for ($k=0; $k<sizeof($prevItems); $k++) {
if ($prevItems[$k] == $number)
return true;
}
return false;
}
$num[0] = rand(1,20);
$prevItems[0] = $num[0];
for ($i=1; $i<=10; $i++) {
$num[$i] = rand(1,10);
while (contain($prevItems, $num[$i])) {
$num[$i] = rand (1,20);
}
$prevItems[$i] = $num[$i];
}
sort($num);
然后我有一个按钮,从数组中取出第一个数字,并根据数字回显数据库中的文本。
<form action="koe.php" method="POST">
<input id="myform" type="submit" class="btn btn-primary" name="submit" value="new question">
</form
if(isset($_POST['submit'])) {
if($result = $my->query("SELECT * FROM questions ORDER BY OID DESC LIMIT 1")) {
if($result = $my->query('SELECT * FROM questions WHERE OID="'.$prevItems[0].'"')) {
while($t = $result->fetch_object()) {
echo '<h2>'.$t->text.'</h2>';
}
}
}
}
我的问题是:我想让按钮回显之前的下一个值。就像我想在没有页面刷新的情况下回复prevItems [1]然后prevItems [2],因为每次按下按钮时,页面刷新并且函数会生成新的10个数字,因此它们不再是唯一的。
我试图用javascript停止页面刷新
var frm = $('#myform');
frm.submit(function (ev) {
$.ajax({
type: frm.attr('method'),
url: frm.attr('action'),
data: frm.serialize(),
success: function (data) {
alert('ok');
}
});
ev.preventDefault();
});
我认为它不能像这样工作,但我不知道如何解决它。
澄清一下:我的问题是在没有页面刷新的情况下点击按钮来浏览数组。每次按下按钮,阵列中的下一个数字都会显示出来。 array [0] - &gt;数组[1] - &gt;数组[2] - &gt;阵列[3]
答案 0 :(得分:0)
我会改变你的php页面以期待一个帖子变量“num”
if(isset($_POST['num'])) {
if($result = $my->query("SELECT * FROM questions ORDER BY OID DESC LIMIT 1")) {
if($result = $my->query('SELECT * FROM questions WHERE OID="'.$_POST['num'].'"')) {
while($t = $result->fetch_object()) {
echo '<h2>'.$t->text.'</h2>';
}
}
}
}
//你可能希望在你开始工作之后谷歌“mysql防止注射”
然后在你的ajax调用中你可以传入“num”
$(function(){
$("mybutton").on("click", function() {
$.ajax({
type: "POST",
url: "myURL",
data: { num:myNums[0] },
success: function (data) {
$("#output").innerHTML += data;
myNums.splice(0,1); //take out the first num
}
});
});
});