recherche

Maison  >  Questions et réponses  >  le corps du texte

data.indexOf n'est pas une erreur de fonction qui apparaît dans

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粉004287665P粉004287665305 Il y a quelques jours477

répondre à tous(1)je répondrai

  • P粉412533525

    P粉4125335252024-02-27 14:05:16

    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.

    répondre
    0
  • Annulerrépondre