将GET请求数据加载到DataTable中(从本地JSON切换到axios.get)

时间:2019-02-27 16:03:01

标签: javascript jquery json datatable axios

我曾经有一个本地JSON文件,可将数据加载到DataTable中。

我正在切换到axios和url的过程中--- axios.get在我项目的其他区域中工作。

但是,我现在正在研究的项目区域使用的是DataTable,它以特定的方式接收数据(请参见下面的代码)。我已经格式化了我的代码以尝试使其与DT的格式兼容,但是我没有运气。我可以在控制台中告诉我正在访问JS文件和函数,但我根本无法让DataTables加载我的数据。

我在下面附上了代码片段,以及一个JSFiddle,其中显示了 在我刚使用本地JSON文件时以前的工作方式

有什么想法吗?我喜欢DT及其功能,但有时很难使用。

adm.js代码段:

import $ from 'jquery';
import DataTable from 'datatables.net';

var moment = require('moment');

export default class {
    constructor() {

    }

loadAdmData(response) {
        let admText = $.each(response, function(idx, val) {
            console.log("loadAdmData is being reached") // --- working
            return {
                "Ct": val.Ct,
                "Status": val.AdmStatus,
                "Classification": val.Classification
            }
        }).filter(x => x.p_h_v == "") // if p_h_v is empty, don't render it to table

    if (!admText.length) $("#adm-tab").hide();

    $('#adm-table').DataTable({
        columns: [
            { data: "Ct" },
            { data: "Status" },
            { data: "Classification" }
        ],
        data: admText, // ----- this is where the data comes in
        responsive: true
    });

    }
}

index.js

我不想在这里写出来,所以我创建了一个小提琴。

XML代码段(我要获取的内容):

<feed xmlns="[redacted]" xml:base="[redacted]">
<id>[redacted]</id>
<title />
<updated>2019-02-27T14:45:58Z</updated>
<entry m:etag=""8"">
<id>[redacted] />
<link rel="edit" href="[redacted]" />
<title />
<updated>2019-02-27T14:45:58Z</updated>
<author>
<content type="application/xml">
<m:properties>
<d:AdmStatus>Active</d:AdmStatus>
<d:Ct m:type="SP.Taxonomy.TaxonomyFieldValue">
<d:Classification>[redacted]</d:Classification>
</m:properties>
</content>
</entry>

JSON代码段(我以前获取的本地文件)

{
  "d": {
    "results": [
      {
        "admstatus": "Active",
        "classification": "[redacted]",
...etc

1 个答案:

答案 0 :(得分:0)

我想这部分代码有问题

then(axios.spread((adm) => {

    let admissData = adm.data.d.results;
    ///
    let aComp = new admComponent(admData);
        aComp.loadAdmData(admData);

}))

尝试调试这些:

  1. 这里admData是什么。
  2. 将admissData打印到控制台
  3. admissData JSON格式是否与本地数据相同

编辑1:

  1. 如果键值不同,则可能是您在此处读取数据时遇到了问题

            return {
                "Ct": val.Ct,
                "Status": val.AdmStatus,
                "Classification": val.Classification
            }
    
  2. 还打印admText以查看Json的格式是否正确

  3. 您是否可以添加两个有问题的JSON可能有助于调试