data.indexOf n'est pas une erreur de fonction qui apparaît dans
P粉004287665
P粉004287665 2024-02-26 14:39:12
0
1
451

data.indexOf n'est pas une erreur de fonction dans la bibliothèque JavaScript Tabulator.

Message d'erreur complet :

[Error] TypeError: data.indexOf is not a function. (In 'data.indexOf("{")', 'data.indexOf' is undefined)
    load (tabulator.js:6075)
    _loadInitialData (tabulator.js:7971)
    _create (tabulator.js:7841)
    (anonieme functie) (tabulator.js:7756)

Et attention :

Table Not Initialized - Calling the redraw function before the table is initialized may result in inconsistent behavior, Please wait for the `tableBuilt` event before calling this function

J'ai utilisé la configuration décrite dans la documentation, basée sur un navigateur, donc tabulator.js et tabulator.css sont là où ils se trouvent dans le HTML. Rien d'autre n'est fait.

Mon HTML :

<!DOCTYPE html>
<html lang="nl">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <link rel="stylesheet" href="css/tabulator.css">
        <!-- <link rel="stylesheet" href="css/tabulator.css.map"> -->
        <link rel="stylesheet" href="css/layout.css">
        <link rel="stylesheet" href="css/style.css">
        <script defer src="js/tabulator.min.js"></script>
        <script defer src="js/crud.js"></script>
        <script defer src="js/data.js"></script>
        <script defer src="js/assess.js"></script>
        <title>DMMA</title>
    </head>
    <body>
        <main id="home">
            <h1 class="center-text dark-blue-text">Datamanagement Maturity Assessment</h1>
            <div id="entree" class="container"></div>
            <div class="output container"></div>
        </main>
    </body>
</html>

Mon javascript dansassess.js :

document.addEventListener('DOMContentLoaded', async function() {
  
  // the assObj is the data of assessment objects I want to retrieve
  const assObj = new dataProvider;
 
  // Use Tabulator
  assObj.get('api.php/records/AssmntPlusObjects')

    // .then(async dataArray => displayRecords(dta, false))   // Works!
    .then(dataArray => {
      let table = new Tabulator("#entree", {
        data: dataArray,
        autoColumns: true
      })
    })
    .catch(err => displayError(err, null))
});

assObj.get Va à une classe get qui récupère les données d'une base de données MySQL qui récupère les données via l'API commune PHP. Tout fonctionne. Tableau de données avec des objets convertis en objets JavaScript OK. Le tabulateur donne l'erreur ci-dessus.

Le site Web est hébergé chez un fournisseur d'accès Internet et je ne souhaite pas exécuter un autre MySQL localement.

Des suggestions ? Mauvais réglage ?

P粉004287665
P粉004287665

répondre à tous(1)
P粉412533525

Le coupable a été trouvé ! J'ai besoin d'obtenir les enregistrements dans dataArray en utilisant

data: dataArray.records,

C'est tout !

J'ai trouvé cela étonnant car dans la fonction de table personnalisée que j'ai construite avec des données (displayRecords(dataArray, false)), cela fonctionnait sans la propriété .records.

Merci de m'avoir fait savoir ce qu'est dataArray.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal