2016-11-17 2 views
0

jquery.dataTables.min.js: Tables 1.10.12Tables: json ist in Initcomplete undefined()

Ich brauche Zugriff auf eine Tabelle Zeilen zu erhalten, nachdem die Daten geladen ist (deferred). Und ich kann nicht, weil jsonundefined für mich innerhalb initComplete Funktion ist. Trotzdem ist mein Tisch geladen und ich sehe alle Daten. Außerdem befinden sich settings Daten in der Funktion.

Warum ist das? Habe ich eine Option vergessen?

Mein Code:

var data_table = task_submit_table.DataTable({ 
    "initComplete": function (settings, json) { 
     console.log(json); 
    }, 
    "processing": true, 
    "serverSide": true, 
    "deferRender": true, 
    "deferLoading": 0, 
    "ordering": true, 
    "order": [[ 0, "desc" ]], 
    "ajax": { 
     "url": "get_task_list/", 
     "type": "POST", 
     "dataType": "json" 
    }, 
    "columns": [ 
     {"title": "Id", "data": "id"}, 
     {"title": "Date", "data": "date"}, 
     {"title": "Project Id", "data": "project_id"}, 
     {"title": "Project Name", "data": "project_name"}, 
     {"title": "project", "data": "biobank_project"}, 
     {"title": "#Hashes", "data": "nhashes"}, 
     {"title": "#Success", "data": "nsuccess"}, 
     {"title": "#Fail", "data": "nfail"}, 
     {"title": "Status", "data": "status"}, 
     {"title": "Report", "data": null}, 
     {"title": "", "data": null}, 
     {"title": "", "data": null} 
    ], 
    "columnDefs": [ 
     { 
     "targets": [0], 
     "visible": false, 
     "searchable": true 
     }, 
     { 
     "targets": [2], 
     "visible": false, 
     "searchable": true 
     }, 
     { 
     "targets": -3, 
     "data": null, 
     "defaultContent": "<form id='tool-export' method='post' action='export/'>"+ 
      "<a href='#' id='export' class='btn btn-default export-link'>export</a></form>" 
     }, 
     { 
     "targets": -2, 
     "data": null, 
     "defaultContent": "<a href='#' id='task-delete' class='btn btn-default task-delete-link'"+ 
      "data-toggle='modal' data-target='#confirm_modal'>delete</a>" 
     }, 
     { 
     "targets": -1, 
     "data": null, 
     "defaultContent": "<a href='#' id='task-restart' class='btn btn-default task-restart-link'"+ 
      "data-toggle='modal' data-target='#confirm_modal'>restart</a>" 
     } 
    ], 
    "dom": "<\"dt-btn-floatLeft\"l><\"dt-btn-floatRight\"B><\"dt-btn-clear\">rtip", 
    "buttons": [ 
     { 
     "title": "Refresh", 
     "text": "Refresh", 
     "action": function() { 
      data_table.draw(); 
     } 
     } 
    ] 
    }); 
    data_table.draw(); 

Im Frontend der Tabelle sieht wie folgt aus: enter image description here

+0

Versuchen Sie '' initComplete "' in '" fnInitComplete "zu ändern' –

+0

Kein Erfolg. Es gibt Einstellungsdaten, aber Json ist immer noch undefiniert. – trex

Antwort

0

Sie werden wahrscheinlich die drawCallback-Funktion verwenden, die jedes Mal ausgeführt wird, wenn Ihre Tabelle vollständig gezeichnet wird.

So würde es so aussehen:

"drawCallback": function(settings) { 
    // You use this API object to get the data from the displayed data set. 
    var api = this.api(); 
} 

Diese drawCallback jedes Mal ausführen wird das Gitter so auf neu gezeichnet wird: Sortieren, Filtern, Paging, ajax.reload() usw. Wo, wie die Funktion Initcomplete Ich glaube, nur einmal gefeuert. https://datatables.net/reference/option/drawCallback