Les tables de données: Impossible de lire la propriété de la longueur de undefined
Je comprends populaire cette question, et j'ai lu toutes les questions similaires ici, sur un Débordement de Pile et d'autres sites (y compris les tables de données du site web).
De préciser, je suis en utilisant
- PHP Codeigniter
- Materliazecss
J'ai aussi fait en sorte que j'ai reçu le tableau JSON correctement:
[{"name_en":"hello","phone":"55555555"},{"name_en":"hi","phone":"00000000"}]
Mon tableau HTML ressemble à ceci:
<table id="customer_table">
<thead>
<tr>
<th>Name</th>
<th>Phone</th>
</tr>
</thead>
</table>
Et voici mon document.ready
fonction:
$(document).ready(function(){
//$('#customer_table').DataTable();
$('#customer_table').DataTable( {
"ajax": 'json',
"dataSrc": "",
"columns": [
{ "data": "email" },
{ "data": "name_en" }
]
});
});
L'erreur que je reçois est
Uncaught TypeError: Cannot read property 'longueur' undefined
OriginalL'auteur Abdel-Rahman Shoman | 2015-12-15
Vous devez vous connecter pour publier un commentaire.
C'est encore plus simple: il suffit d'utiliser
dataSrc:''
option dans l'ajax définition donc dataTable sait attendre d'un tableau au lieu d'un objet:Voir ajax options
OriginalL'auteur tomsoft
OK, merci pour l'aide.
Toutefois, le problème était beaucoup plus facile que cela.
À tous j'ai besoin de le faire est de fixer mon JSON afin d'attribuer le tableau, à un attribut appelé de données, de la manière suivante.
Salut Abdel, comment avez-vous d'ajouter les "données"? Merci
Je l'ai fait en attribuant le tableau JSON à un "données" de la variable dans le backend côté comme suit .. $temp = '[{"name_en":"bonjour","phone":"55555555"},{"name_en":"salut","téléphone":"00000000"}]'; $info['data'] = $temp;
OriginalL'auteur Abdel-Rahman Shoman
Essayer comme suit le retour doit être d, pas d en.les données
error
àreturn d
? J'ai été faire la même erreur que ci-dessus, mais ne pouvait pas trouver la faute de frappe ou autre, cela a résolu mon problème.à tout moment !!!
OriginalL'auteur Nisal Edu
CAUSE
Cette erreur
TypeError: Cannot read property 'length' of undefined
signifie généralement que jQuery DataTables ne peut pas trouver les données dans la réponse à la requête Ajax.Par défaut de jQuery DataTables s'attend à ce que les données soient dans l'un des formats indiqués ci-dessous. L'erreur se produit car les données sont renvoyées au format autre que par défaut.
Tableau de tableaux
Tableau d'objets
SOLUTION
Utiliser le format par défaut ou utiliser
ajax.dataSrc
option pour définir des propriétés de données contenant les données de la table en Ajax réponse (data
par défaut).Voir Tableau de données de localisation pour plus d'informations.
LIENS
Voir jQuery DataTables: Commune de la console d'erreurs pour plus de détails.
OriginalL'auteur Gyrocode.com
Lorsque vous avez des données JSON le message d'erreur suivant s'affiche
Une meilleure solution consiste à attribuer un
var data
pour le local tableau json objet,de détails, voir: https://datatables.net/manual/tech-notes/4
C'est vous aide à afficher la table des matières.
OriginalL'auteur chetan
Dans mon cas, j'ai dû céder ma json d'un attribut appelé aaData tout comme dans les tables de données
ajax exemple données qui ressemblait
cette.
OriginalL'auteur Haris ur Rehman
Si vous êtes à l'aide d'ajax en fonction rappelez-vous qu'il attend des données JSON à être retournées, avec les paramètres définis.
OriginalL'auteur gvivetapl
Alors que les réponses ci-dessus décrivent bien la situation, lors de la résolution de la question vérifiez également que le navigateur vraiment obtient le format de DataTables attend. Il y a peut-être d'autres raisons de ne pas obtenir le
data
. Par exemple, si l'utilisateur n'a pas accès aux données de l'URL et fait un peu de HTML à la place. Ou le système distant a un malheureux "fix-ups" en place. Réseau dans l'onglet du navigateur outils de Débogage aide.OriginalL'auteur Roman Susi