2016-04-11 13 views
1

Wenn ich die Erfolgsfunktion DataTable hinzufügen nicht automatisch Zeilen in der Tabelle ausfüllen. Wenn ich die Erfolgsfunktion entferne, ist alles in Ordnung, und die Datentabelle füllt die Daten in der Tabelle korrekt. Ich möchte in Antwort mit getAccessMessageWithStatus Nachricht nach Status abfangen, aber wenn ich es wie diese Datatable keine Zeilen füllen. Wie kann ich das machen?Datentabelle - Ajax Erfolg

$('#' + datatableName).DataTable({ 
    destroy: true, 
    'bProcessing': false, 
    'bServerSide': true, 
    'ajax': { 
    'url': URL, 
    'data': filters, 
    beforeSend: function() { 
     loader.popup('show'); 
    }, 
    success: function(response) { 
     getAccessMessageWithStatus(response); 

    }, 
    complete: function() { 
     $listContainer.show(); 
     $containerChoiseColumnsFilter.show(); 
     $(".containerRaportButtons").show(); 
     getLastSearches(); 
     getUses(); 
     loader.popup('hide'); 
    } 
    }, 
    'sServerMethod': "POST", 
    'columns': columns, 
    'order': order, 
    'responsive': true 
}); 

Antworten:

success: function(response) { 
    getAccessMessageWithStatus(response); 

}, 

Oder:

"dataSrc": function(response) { 

    if (response.status == false) { 
    alert(response.msg); 
    return []; 
    } 
    return response.aaData; 
}, 

Antwort

5

Remove ";" nach dem Funktionsnamen in den Code.

success: function (response) { 
     getAccessMessageWithStatus(response) 
}, 
+0

Warum? Ich frage nur, weil ich an deiner Argumentation interessiert bin! – RiggsFolly

+0

War das eine richtige Antwort ?? – Bikee

+0

Ja Es ist Arbeit xD Aber ich denke, wie es sicher ist? – rad11

1

Es ist ein Ereignis von DatatTable 'xhr.dt' genannt. Sie können es auf diese Weise verwenden.

$('#' + datatableName).on('xhr.dt', function(e, settings, json, xhr){ 
    getAccessMessageWithStatus(json); 
}).DataTable({ 
    destroy: true, 
    'bProcessing': false, 
    'bServerSide': true, 
    'ajax': 
     { 
      'url': URL, 
      'data': filters, 
      beforeSend: function() { 
       loader.popup('show'); 
      }, 
      complete: function() { 
       $listContainer.show(); 
       $containerChoiseColumnsFilter.show(); 
       $(".containerRaportButtons").show(); 
       getLastSearches(); 
       getUses(); 
       loader.popup('hide'); 
      } 
     } 
}); 

Sie sollen nicht den Erfolg von Ajax-Attribute verwenden, weil Sie den Erfolg Funktion von Datatable überschreiben. Sehen Sie dieses Stück Code von query.dataTables.js

"success": function (json) { 
    var error = json.error || json.sError; 
    if (error) { 
     _fnLog(oSettings, 0, error); 
    } 

    oSettings.json = json; 
    callback(json); 
} 

können Sie feststellen, dass sie in dieser Funktion einen Rückruf haben. Dieser Callback löst die Funktion _fnCallbackFire und dies das Ereignis nennen xhr.dt

Weitere Informationen finden Sie auf dieser Seite https://datatables.net/reference/event/xhr

0

Sie können es auf diese Weise verwenden:

"complete": function (json, type) { //type return "success" or "parsererror" 
    if (type == "parsererror") { 
     alert("parsererror"); 
    } 
    ... 
}