Handsontable - 表未呈现

Posted

技术标签:

【中文标题】Handsontable - 表未呈现【英文标题】:Handsontable - Table not rendered 【发布时间】:2017-09-03 19:13:51 【问题描述】:

我正在尝试在handsontable 中加载数据。

html 文件非常基本: 只是一个表格和一个按钮来加载由 php 脚本(名为 actions.php)发送的数据:

<!doctype html>

<html>

<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <script src="dist/handsontable.full.js"></script>
    <link rel="stylesheet" media="screen" href="dist/handsontable.full.css">
</head>

<body>

<div id="hot"></div>
<br />
<input id="try" type="button" value="Try" />

</body>

<script>
$(function() 
    var objectData = [
        id: 1, name: 'Ted Right', address: '',
        id: 2, name: 'Frank Honest', address: ''];

    $('#hot').handsontable(
        data: objectData,
        colHeaders: true,
        minSpareRows: 1
    );

    var hot = $("#hot").handsontable('getInstance');

    $("#try").click(function()
        $.getJSON("actions2.php", function(result)
            console.log (objectData);
            console.log (JSON.parse(result));
            hot.render();
        );
    ); 

);
</script>

</html>

php也很基础

<?php
$result=array(
    array("id" => 5, "name" => "Bill Gates", "address"=>"zzz"),
    array("id" => 6, "name" => "Steve Jobs", "address"=>"xxx")
);

echo json_encode(json_encode($result));
?>

当我点击“Try”按钮时,objectData 更新得很好,但尽管有 hot.render() 指令,表格却没有更新。

知道我做错了什么吗?

Rgds

【问题讨论】:

【参考方案1】:

我发现了问题。

js脚本中缺少

.loadData方法,php中有json_encode错误

这是一个工作示例。

<html>

<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <script src="dist/handsontable.full.js"></script>
    <link rel="stylesheet" media="screen" href="dist/handsontable.full.css">
</head>

<body>
    <div id="hot" />
    <br />
    <input id="go" type="button" value="Click me" />
</body>

<script>
$(function() 
    var objectData = [
        id: 1, name: 'Ted Right', address: '',
        id: 2, name: 'Frank Honest', address: ''];

    $('#hot').handsontable(
        data: objectData,
        colHeaders: true
    );

    var hot = $("#hot").handsontable('getInstance');

    $("#go").click(function()

        $.getJSON("actions2.php", function(result)
            hot.loadData(result);
            hot.render();
        );
    ); 

);
</script>

</html>

和 actions2.php 文件

<?php
$result=array(
    array("id" => 5, "name" => "Bill Gates", "address"=>"zzz","ee"=>"zz"),
    array("id" => 6, "name" => "Steve Jobs", "address"=>"xxx")
);

echo (json_encode($result));
?>

【讨论】:

以上是关于Handsontable - 表未呈现的主要内容,如果未能解决你的问题,请参考以下文章

无论如何用 Handsontable 过滤行?

Handsontable中的日期格式

我创建了一个 Handsontable 并想要呈现 Json 数据?

Handsontable 复选框不起作用

Shiny modal 中的handsontable 无法正确渲染

DT 表未以闪亮显示