【问题标题】:Loading GET request data into a DataTable (switching from local JSON to axios.get)将 GET 请求数据加载到 DataTable 中(从本地 JSON 切换到 axios.get)
【发布时间】:2019-07-21 10:05:36
【问题描述】:

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

我正在改用 axios 和 url——axios.get 正在我项目的其他领域工作。

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

我在下面附上了代码 sn-ps 和一个 JSFiddle,它显示了 过去的工作原理,当我只是使用本地 JSON 文件时。 p>

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

adm.js sn-p:

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:

我不想把它写在这里,所以我创建了一个 Fiddle。

XML sn-p(我想要得到的):

<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 sn-p(我以前获取的本地文件)

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

【问题讨论】:

    标签: javascript jquery json datatable axios


    【解决方案1】:

    我猜这部分代码有问题

    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 可能有助于调试

    【讨论】:

    • 1. admData 是访问 JSON 节点的 adm.data.d.results。 JSFiddle 链接中有一个错字(称为admissData),但我刚刚修复了它。 2. 现在正在做的过程中。 3.格式略有不同---在本地文件中,键名略有不同(全部小写),而admData(url)以大写字母开头。
    • 2 的更新。我在控制台中收到[object Array] 并打开每个显示我请求的值(Ct、分类等)。
    • 我刚刚将我要获取的数据和原始 JSON 添加到我的问题正文中。
    • 我成功获取的其他数据也是 XML 格式——并且使用x.data.d.results(我从原始 JSON 格式获取)成功获取。
    猜你喜欢
    • 2022-01-05
    • 2019-09-08
    • 2016-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-01
    • 2013-10-31
    • 1970-01-01
    相关资源
    最近更新 更多