代码之家  ›  专栏  ›  技术社区  ›  Second View

使用Ajax更新页面数据

  •  1
  • Second View  · 技术社区  · 6 年前

    如果我单击Books链接,他将按升序对书籍进行排序,如果我再次单击,他将按降序对书籍进行排序,但除非我单击Next或Prev Submit,否则他不会执行此操作,为什么他不使用Out Clicked on Next或Prev更新页面?

    $(document).ready(function() {
    $("#sorter").click(function(e) {
    e.preventDefault();
    var order_by_value = $('input[name="order_by"]').val();
        $.ajax({
          type: 'GET',
           url: "" + 'http://test.local/UUser.php?action=getBooks',
          data:{
         'order_by_value': order_by_value,
    
         // button: 'button',
          },
          success: function (res) {
            console.log(res);
            if(order_by_value == "ASC"){
           $('input[name="order_by"]').val("DESC");
          }
          else {
           $('input[name="order_by"]').val("ASC");
           }
         // $('input[name="current"]').trigger('click');
        }
       });
    });
    });
    

    这是我的职责

    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);
    
     }
    
    2 回复  |  直到 6 年前
        1
  •  1
  •   Joaquin Santana    6 年前

    这个事件正在监听一个ID为sorter的元素,所以它工作正常,您只需要显示从服务器到客户机的答案。

    success: function (res) {
            console.log(res);
            if(order_by_value == "ASC"){
           $('input[name="order_by"]').val("DESC");
          }
          else {
           $('input[name="order_by"]').val("ASC");
           }
         // $('input[name="current"]').trigger('click');
         //here you display the result from the server
        $("#myTable").html(res);
        }
    
        2
  •  1
  •   Martin    6 年前

    从Ajax函数本身就很难判断。逻辑看起来不错。也许您没有针对特定的元素,或者HTML代码的结构在逻辑上有一些缺陷,您试图实现什么?