首页 > 解决方案 > +Ajax 更新页面无需重新加载

问题描述

当我登录系统时,它将显示我拥有的书,当我单击链接书时,如果它们在不刷新页面的情况下降序,它将按升序对书进行排序,如果我再次单击,它也会对它们进行降序排序而不刷新页面页面,,,在我的代码中,当我单击他没有做的事情的链接时,我打开检查元素,他传递 order_by_value:DESC 当我再次单击时,他传递了参数 order_by_value:ASC 但他没有采取行动,为什么?

UUser.php中的这个函数getBook

 public function getBooks($start = 0, $limit = 2, $order = "ASC")
  {
   $sql_start = $start * $limit;
   $sql_limit = $limit;
   $sql_order_by = $order;

   $query = "SELECT Library.nameOfBook, userBook.book_id, userBook.user_id FROM loginUser JOIN userBook JOIN Library ON userBook.user_id = loginUser.id AND userBook.book_id = Library.id WHERE loginUser.username=:username ORDER BY Library.nameOfBook $sql_order_by LIMIT $sql_start, $sql_limit";
   $statment = $this->db->prepare($query);
   $statment->execute([
       ':username' => $this->username
   ]);
   $result = $statment->fetchAll();

  echo "<table id='myTable' border='1'>

  <tr>
   <th><a id='sorter' href='#'>Books</a></th>
   <th>Action</th>
   </tr>";
   foreach($result as $row){
       echo "<tr>";
       echo "<td>" . $row['nameOfBook'] . "</td>";
       echo "<td>" ."<input type='submit' id='delete".$row['book_id']."-".$row['user_id']."' onclick='deleteBook(this)' name='delete' value='Delete'>" . "</td>";
       echo "</tr>";
   }

   echo "</table>";
   echo "";
   return count($result);
 }  

这是我在 index.php 中的 ajax

 $(document).ready(function() {
 $("#sorter").click(function(e) {
 e.preventDefault();
 var order_by_value = $('input[name="order_by"]').val();

    $.ajax({
      type: 'GET',
       url: "" + 'UUser.php',
      data: {
     'order_by_value': order_by_value,
     // button: 'button',
      },
      success: function (res) {
        if(order_by_value == "ASC"){
       $('input[name="order_by"]').val("DESC");
      }
      else {
       $('input[name="order_by"]').val("ASC");
       }
   // $('input[name="current"]').trigger('click');
    }
   });
});
});

index.php 中的这个脚本到 next 和 prev 表

<?php
 $start = intval(isset($_POST['start'])?$_POST['start']:0);
 $order_by_hidden = isset($_POST['order_by'])?$_POST['order_by']:"ASC";
 if(isset($_POST['previous'])){
   $start = $start -1;
   //if($start < 1) $start = 1;
    $start= max($start, 1);
}
else if(isset($_POST['current'])){
    $start = $start;
}
else if(isset($_POST['next'])){
   $start = $start + 1;
}
else {
$start = 1;
}
?>

这也是我在 index.php 中的表格

 <form method="post" action="" id="form1">
 Name: <input type="text" name="user" value="<?php echo $user;?>">
<span class="error">* <?php echo $nameErr;?></span>
<br><br>
password: <input type="password" name="pass" value="<?php echo $password;?>" >
<span class="error">* <?php echo $passwordErr;?></span>
<br><br>
<input type="submit" name="submit" value="Login">
<br><br>
<input type="hidden" value="<?php echo $start;?>" name="start"/>
<input type="hidden" value="<?php echo $order_by_hidden;?>" name="order_by"/>
 <button type="button" name="button" onclick="window.location.href='/ooRigester.php'">SignUp</button>
  <br><br>
  <input type='submit' name='previous' value='previous' <?php echo ($start <= 1 ? "disabled" : ""); ?>>
 <input type='submit' name='next' value='next'><br>
 <input type='button' name='current' value='current' style="display:none;"><br>
</form>

标签: javascriptphpjqueryajaxrefresh

解决方案


推荐阅读