web-dev-qa-db-fra.com

la pagination côté serveur de datable jquery ne fonctionne pas

J'essaie d'implémenter les jquery datatables sur un projet php en utilisant le traitement côté serveur, mais la pagination ne fonctionne pas et je n'ai aucune erreur dans la console firebug.

La page est simple et directe, voici le code html:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=Edge">

  <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/v/dt/jq-2.2.3/dt-1.10.12/datatables.min.css"/>
  <script type="text/javascript" src="https://cdn.datatables.net/v/dt/jq-2.2.3/dt-1.10.12/datatables.min.js"></script>

</head>

<body>
<table class="table">
  <thead>
  <tr>
    <th col-data="item_id">Item Id</th>
    <th col-data="name">Name</th>
  </tr>
  </thead>
</table>

<script type="text/javascript">

  $(document).ready(function() {
    var dataTable = $('.table').DataTable( {
      "processing": true,
      "serverSide": true,
      "buttons": [],
      "order": [],
      "ajax":{
        url :"{{ url('stock_acc_get') }}", // json datasource
        type: "post",
      }
    } );

  } );
</script>

</body>

</html>

Voici les données postées sur le serveur (visualisées dans la console firebug):

columns[0][data]        0
columns[0][name]    
columns[0][orderable]       true
columns[0][search][regex]   false
columns[0][search][value]   
columns[0][searchable]      true
columns[1][data]        1
columns[1][name]    
columns[1][orderable]       true
columns[1][search][regex]   false
columns[1][search][value]   
columns[1][searchable]      true
draw    1
length  10
search[regex]   false
search[value]   
start   0

Et voici la réponse json du serveur:

{
  "draw":1,
  "recordsTotal":23,
  "recordsFiltered":10,
  "data": [
    ["100018","Test Acc"],["100019","Test Acc 2"],
    ["100020","Test Acc 3"],["5845645","Optional 1"],
    ["56456456","Optional 2"],["541515","Optional 3"],
    ["845812","Optional 4"],["103646","Belte Setesdal"],
    ["103647","Belte Setesdal"],["103681","Belte Sigdal-Eggedal"]
  ]
}

La page est configurée pour afficher 10 enregistrements. Le nombre total d'enregistrements est de 23 et les liens ne sont pas créés pour naviguer vers les pages suivantes. J'ai joint une photo pour une meilleure compréhension, les boutons Suivant/Précédent sont désactivés et cela ne montre qu'une page.

 enter image description here

5
Ceparu Stefan

recordsFiltered est censé représenter le nombre d'enregistrements qui passent le filtre de recherche (ainsi que tout autre filtre), et non le nombre d'enregistrements sur la page.

Vous dites à DataTables qu'il n'y a que 10 enregistrements pertinents. Par conséquent, il ne tente pas de configurer la pagination pour les 13 autres.

Voir le troisième DataTables FAQ post (dans la catégorie de traitement côté serveur) ou la Traitement côté serveur page associée à cet envoi pour plus d'informations.

12
Chris H.

La recordsFiltered travaille principalement pour la pagination par création. passez donc le nombre total de données de votre table sur ce paramètre recordsFiltered

0