按钮在没有页面刷新的情况下一次浏览一个数组值

时间:2015-05-04 15:32:21

标签: javascript php mysql arrays

我有一个在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]

1 个答案:

答案 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
        }
    });
  });
});