2016-11-09 1 views
1

J'essaie d'utiliser des données dans le mode de traitement côté serveur où les données sont chargées en lots, de manière asynchrone. C'est très utile pour les jeux de données massifs. La documentation est assez claire (https://datatables.net/examples/data_sources/server_side.html), cependant, j'ai du mal à trouver comment l'implémenter dans Google Apps Script et son HTMLService.Comment utiliser le traitement côté serveur de données avec Google Apps Script

Ce que je suis actuellement à l'aide (qui travaille) est datatables chargement de toutes les données à la fois:

$(document).ready(function() { 
    google.script.run.withSuccessHandler(loadLogList).getLogList(); 
}); 

function loadLogList(data) { 
    if (data) { 
    for (var i = 0; i < data.length; i++) { 
     htmlString += "<tr><td>" + data[i][0] + "</td>"; 
     htmlString += "<td>" + data[i][1] + "</td>"; 
     htmlString += "<td>" + data[i][2] + "</td>"; 
     htmlString += "<td>" + data[i][3] + "</td></tr>"; 
    } 
    $("#LogListBody").html(htmlString); 
    } 

    var table = $("#LogList").DataTable({ 
    "columnDefs": [ 
     { "orderData":[ 0 ], "targets": [ 1 ] }, 
     { 
     "targets": [ 0 ], 
     "visible": false, 
     "searchable": false 
     } ], 
    "paging": true, 
    "select": true 
    }); 
} 

La documentation suggère que les besoins initialisant comme datatables ceci:

$(document).ready(function() { 
    $('#example').DataTable({ 
     "processing": true, 
     "serverSide": true, 
     "ajax": "../server_side/scripts/server_processing.php" 
    }); 
}); 

Donc de toute façon je dois fournir "ajax" avec "google.script.run". Des idées? J'ai alors besoin d'écrire une fonction sur le côté serveur (Code.gs) pour retourner les données au format json. Si quelqu'un a un code d'échantillon pour cela, je serais très reconnaissant.

Merci

Répondre

0

regardant la ajax docs peuvent être configurés en quelques différemment. L'un est en fournissant une fonction personnalisée. https://datatables.net/reference/option/ajax

Modifier basé sur plus d'info de op. Ceci est la configuration de base:

$('#example').dataTable({ 
    "processing": true, 
    "serverSide": true, 
    "ajax": function (data, callback, settings) { 
    google.script.run.withSuccessHandler(callback).getLogList(settings); 
    } 
}); 
+0

Le plugin analyse déjà ce qui est chargé dans le DOM. Je veux passer à un schéma asynchrone où les données sont tirées quand c'est nécessaire. – h0dges

+0

Obtenez-le. Vous voulez supprimer le code que vous avez posté alors. Jetez un oeil à la documentation que j'ai posté sur l'utilisation d'une fonction personnalisée pour l'appel ajax. –

+0

@SpencerEaston J'ai le même problème que l'OP. J'ai essayé votre code mais il renvoie 'Échec en raison d'une valeur illégale dans la propriété: ajax'. Vous avez une idée de pourquoi ça fait ça? Aussi utilise 'callback' dans la méthode withSuccessHandler? – mkab