web-dev-qa-db-fra.com

définir un gestionnaire d'erreurs pour l'appel ajax de jquery datatables

J'essaie d'avoir un gestionnaire d'erreurs personnalisé lorsque quelque chose ne va pas (c'est-à-dire que le serveur ne répond pas) à l'appel ajax pour le chargement de nouvelles données dans mon datatable.

$table.DataTable().ajax.url(ajaxURL).load();

Par défaut, il affiche une alerte et je peux le modifier pour générer une erreur javascript avec le paramètre suivant:

$.fn.dataTable.ext.errMode = 'throw';

Mais avec cela, j'ai juste une erreur enregistrée dans la console et je ne sais pas comment attraper cette erreur, je ne peux toujours pas fournir mon propre gestionnaire d'erreurs.

Il existe également un événement d'erreur répertorié dans la documentation, mais cela ne semble pas se déclencher. Par conséquent, les alertes suivantes ne sont jamais déclenchées.

$table.on( 'error', function () { alert( 'error' );} );

Tout le reste que j'ai trouvé jusqu'à présent concerne le code hérité, tel que la définition de fnServerData, ce que j'aimerais éviter d'entrer.

Existe-t-il une méthode permettant de définir le rappel d'erreur ajax dans l'API 1.10?

16
aaron

Un nouveau traitement des événements d'erreur a été ajouté dans Datatables v1.10.5 (publié le 10 février 2015).

$.fn.dataTable.ext.errMode = function ( settings, helpPage, message ) { 
    console.log(message);
};

Voir les documents ici:
https://datatables.net/reference/event/error
https://cdn.datatables.net/1.10.5/

38
s0ndeb0k

Utilisez l'événement comme un gestionnaire personnalisé error :

$(document).ready(function () {
    $('#myTable').on('error.dt', function (e, settings, techNote, message) {
        console.log('An error has been reported by DataTables: ', message);
    }).DataTable({
        "displayLength": 15,
        "ajax": {
          ....
2
J.C. Gras

Vous pouvez également utiliser la fonction error dans ajax pour consigner les erreurs.

$('#table').DataTable({
        ajax: {
           dataType: "JSON",  
            type: "POST",
            url: url,
            data: [],
            async: true,
            error: function (xhr, error, code)
            {
                console.log(xhr);
                console.log(code);
            }
        },...
0
Muhammad Yasir