обновить данные страницы с помощью ajax - PullRequest
0 голосов
/ 24 мая 2018

Если я нажал на ссылку книги, он отсортирует книгу по возрастанию, а если я нажму снова, он отсортирует их по убыванию, но он не выполнил это действие, пока я не нажал на следующую или предыдущую отправку, почему он не обновилстраница без щелчка на следующей или предыдущая?

$(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 ]

0 голосов
/ 24 мая 2018

Трудно отличить только от самой функции AJAX.Логика кажется в порядке.Возможно, вы не нацелены на конкретный элемент, или структура HTML-кода имеет некоторый логический недостаток в отношении того, чего вы пытаетесь достичь?

0 голосов
/ 24 мая 2018

это событие прослушивает элемент с сортировщиком идентификаторов, поэтому он работает правильно, вам просто нужно отобразить ответ от сервера клиенту

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);
    }
...