Heim  >  Fragen und Antworten  >  Hauptteil

data.indexOf ist kein Funktionsfehler, der in auftritt

data.indexOf ist kein Funktionsfehler in der Tabulator-JavaScript-Bibliothek.

Vollständige Fehlermeldung:

[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)

Und Achtung:

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

Ich habe das in der Dokumentation beschriebene Setup verwendet, browserbasiert, sodass tabulator.js und tabulator.css dort sind, wo sie im HTML sind. Sonst wird nichts gemacht.

Mein 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>

Mein Javascript in beurteilen.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 Geht zu einer Get-Klasse, die Daten aus einer MySQL-Datenbank abruft, die Daten über die PHP Common API abruft. Es funktioniert alles. Datenarray mit in JavaScript-Objekte konvertierten Objekten OK. Tabulator gibt den oben genannten Fehler aus.

Die Website wird bei einem Internetprovider gehostet und ich möchte kein weiteres MySQL lokal ausführen.

Irgendwelche Vorschläge? Falsche Einstellung?

P粉004287665P粉004287665235 Tage vor399

Antworte allen(1)Ich werde antworten

  • P粉412533525

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

    找到了罪魁祸首!我需要使用

    获取 dataArray 中的记录
    data: dataArray.records,

    就是这样!

    我发现这很神奇,因为在我使用数据构建的自定义表函数(displayRecords(dataArray, false))中,它无需 .records 属性即可工作。

    感谢您让我了解 dataArray 的内容。

    Antwort
    0
  • StornierenAntwort