如何在不知道数据的情况下呈现动态表?使用HTML和JS

时间:2017-12-14 09:18:11

标签: javascript jquery html handlebars.js

动态我的意思是我不知道从ajax响应返回的数据是什么。我设法返回{name:"" value:""}对以获得一些杠杆作用。

示例数据:

[
  [
    {
      "name": "_id",
      "value": "5a32391133425e1f5436161b"
    },
    {
      "name": "Issue",
      "value": "Splash Screen Animations"
    },
    {
      "name": "Status",
      "value": "Done"
    },
    {
      "name": "Comment",
      "value": "The animation must be the same as ios"
    }
  ],
  [
    {
      "name": "_id",
      "value": "5a32391133425e1f5436161c"
    },
    {
      "name": "Issue",
      "value": "Live Streaming Title and Image"
    },
    {
      "name": "Status",
      "value": "Done"
    },
    {
      "name": "Comment",
      "value": "asdasd"
    }
  ],
]

那么如何在表格或把手模板中呈现这些数据?。知道该名称应位于<thead>,且该值应位于<tbody>

我还设法将响应数据分成单独的数组(标题和数据),因此我可以将表格呈现如下。

<script type="text/html" id="ViewDataTemplate">
    <table class="table table-hover">
        <thead>
            <tr>
                {{#each headers}}
                <th>{{this}}</th>
                {{/each}}
            </tr>
        </thead>
        <tbody>
            {{#each data}}
            <tr>
                {{#each this}}
                    <td>{{this}}</td>
                {{/each}}
            </tr>
            {{/each}}
        </tbody>
    </table>
</script>

请注意:我正在寻找的答案并非特定于把手,html / js就足够了。

1 个答案:

答案 0 :(得分:2)

您尚未向我们展示您的分离数据(<?php include_once "mmoconnection.php"; $mydata = json_decode(file_get_contents('php://input')); $charid = $mydata ->charid; $userid = $mydata ->userid; $stmt = $conn->prepare("SELECT name, health, mana, level, experience, clan, posx, posy, posz, rotation_yaw, equip_head, equip_chest, equip_hands, equip_legs, equip_feet, hotbar0, hotbar1, hotbar2, hotbar3 FROM characters WHERE id = ? "); $stmt->bind_param("i", $charid); // "i" means the database expects an integer $stmt->execute(); $stmt->bind_result($row_name, $row_health, $row_mana, $row_level, $row_experience, $row_clan_id, $row_posx, $row_posy, $row_posz, $row_rotation_yaw, $row_equip_head, $row_equip_chest, $row_equip_hands, $row_equip_legs, $row_equip_feet, $row_hotbar0, $row_hotbar1, $row_hotbar2, $row_hotbar3); $stmt = $conn->prepare("SELECT 1, 2 FROM skills WHERE id = ? "); $stmt->bind_result($row_1, $row_2); // output data of each row if($stmt->fetch()) { //other code } ?> headers),但很有可能只需添加缺少的{{1}即可获得您想要的结果在你的身体细胞输出中引用:

data

这种方法可行,但它会对数据结构做出一些假设。最重要的是,它假定每个行对象具有完全相同的属性,并且属性对象始终的顺序相同(&#34; _id&#34;,& #34;问题&#34;,&#34;状态&#34;,&#34;评论&#34;)。

如果您对数据的一致性充满信心,那么我甚至不愿意将数据分成.value{{#each this}} <td>{{this.value}}</td> {{/each}} 。我只是从第一行对象获取列标题,渲染它们,然后在整个数据数组上headers来渲染正文。模板将是:

data

此模板唯一有趣的部分是使用lookup助手。这用于使我们成为数据对象中的第一个数组 - 第一个&#34;行&#34; - 我们用来填充列标题。

同样,如果您的数据是结构化的,那么这将仅 ,以便每行具有相同的列对象,并且这些对象的顺序相同。如果您的数据不太可预测,则需要更复杂的解决方案。如有必要,我可以提供。

我创建了一个fiddle供您参考。