2015-04-27 13 views
23

Ich versuche, jQuery Tables zu verwenden, aber ich habe den FehlerDatentabellen Typeerror: c undefiniert

TypeError: c is undefined

Ich weiß nicht, was mit meinem Code falsch ist, wie ich die JSON korrekt abrufen sehen und ist in der richtiges Format auch, aber ich weiß nicht, was falsch ist, dass ich den obigen Fehler bekomme.

Meine JSON:

{"Data":[{"LOGIN":10184},{"LOGIN":10214},{"LOGIN":10180},{"LOGIN":10187},{"LOGIN":10179},{"LOGIN":10280},{"LOGIN":201},{"LOGIN":10238},{"LOGIN":10296},{"LOGIN":10312}]} 

und mein Tables Code:

$(document).ready(function() { 
    $('#tablename').dataTable({ 
     "processing": true, 
     "serverSide": true, 
     "ajax": { 
      "type": "POST", 
     "url": "https://test.com/api/db/select", 
     "data": function (json) { return JSON.stringify({ "Sql": 12 });}, 
     "contentType": "application/json; charset=utf-8", 
     "dataType": "json", 
     "processData": true, 
      beforeSend : function(xhr){ 
         var access_token = sessionStorage.getItem('access_token'); 
         xhr.setRequestHeader('Authorization', 'Bearer ' + access_token); 
      } 
     }, 
     "dataSrc": "Data", 
     "columns": [ 
      { "data": "LOGIN" } 
     ] 
    }); 
}); 
+1

ich Angenommen, Sie werden mit den verkleinerten js des Plug-Ins, wenn Sie die nicht verwenden -meine, erhalten Sie mehr nützliche Informationen ... Es gibt keine "c" Variable in Ihrem Code ... – n00dl3

Antwort

3

dataSrc ist eine spezielle Datentabellen Ajax Option, dass innerhalb der Ajax-Objekt aufgenommen werden sollten:

"ajax": { 
    "dataSrc": "Data", //<--- place dataSrc here instead 
    "type": "POST", 
    ... 
} 

Sie haben es außerhalb von Ajax platziert, und dadurch haben dataTables keine Ahnung, welche Quelle zu verwenden (neben blind versuchen die Ajax-Antwort) oder wo LOGIN gehört.

56

Überprüfen Sie, ob Sie

<thead></thead> 

<tbody></tbody> 

hinzugefügt haben, habe ich dieses Problem gelöst, indem diejenigen hinzufügen.

Also im Grunde muss die Struktur wie:

<table> 
<thead> 
    <tr> 
    <th></th> 
    <th></th> 
    </tr> 
</thead> 
<tbody> 
    <tr> 
    <td></td> 
    <td></td> 
    </tr> 
</tbody> 
</table> 
+4

Vielen Dank, diese Fehlermeldung ist so irreführend ... – PbxMan

+1

Willkommen Kumpel. Es war ein Kopfschmerz für mich Sobald ich diesen Fehler bekommen habe. –

+1

Direkt auf Myan, direkt auf !! Danke – Dan

1

In meinem Fall habe ich den gleichen Fehler habe, weil ich die ajax.dataSrc (Daten) Funktion, um die Daten zu manipulieren verwendet. Aber danach habe ich vergessen, die Daten zurückzugeben.

"dataSrc": function (json) { 
    for (var i=0, ien=json.data.length ; i<ien ; i++) { 
     //somethings... 
    } 
    return json.data;// I forgot this line, then i got the error "TypeError: c is undefined" 
} 

Nach ein paar Minuten, überprüfte ich die Dokumentation der ajax.dataSrc Funktion, und ich bemerkte, dass ich nicht die Rückkehr hatte:

Returns: Array. Array von Daten, die Datentabellen zu verwenden ist, um die Tabelle zu zeichnen

Ich hoffe, nicht die gleiche Ablenkung haben ...

1

Irgendwann Diese Frage kommt durch die Festsetzung nicht übereinstimmen/ungleichen Spalten mit HTML und Datentabellen Spalten .

"columns": [ 
     null, 
     null, 
     null, 
     {"orderable": false, "width":"2%"}, 
    ], 

Above Javascript definiert 4 Spalten und HTML mit 5 Spalten

<tr> 
    <td>A</td> 
    <td>B</td> 
    <td>C</td> 
    <td>D</td> 
    <td>E</td> 
</tr> 

Daher müssen Sie gleich fix/beide Seiten HTML und Datentabelle Konfiguration.

"columns": [ 
     null, 
     null, 
     null, 
     null, //Added New 
     {"orderable": false, "width":"2%"}, 
    ], 
0

in meinem Fall hatte ich colspan Attribut aus einer th innen thead und loszuwerden, die Fehler zu beseitigen; (

Verwandte Themen