Handsontable javascript - 从服务器加载数组

时间:2013-02-01 10:11:24

标签: php javascript json handsontable

我想使用服务器端存在的数组在Javascript中创建一个Handsontable。该数组有一列:

$table[] = "a";
$table[] = "b";

要在Handsontable中加载它,需要将其转换为:

var input = [["a"],["b"]];
$("#myTable").handsontable({
data: input,
startRows: 1,
startCols: 1
};

在PHP中,我首先使用JSON对其进行编码:

<?php echo json_encode($table); ?>

然后getJSON或另一个ajax函数在这种格式下在客户端获取它,但我找不到正确的方法。希望有人可以提供帮助。

发布它我试过了 1)使用隐藏字段发布它

<input type="hidden" name="input_field" value=<?php echo json_encode($table); ?> >

使用以下内容进入Ajax部分:

var input = $('#input_field').val();
alert(input);

但是警报返回:未定义,并且数组{a,b}未加载到Handsontable中。 2)或者我正在尝试使用$ .getJSON。在PHP中:

$table = array();  
$table[] = array("a");
$table[] = array("b");
echo json_encode($table);

在Ajax中:

jQuery.getJSON('mypage.php',function(table){
    alert(!);
});

警报未被触发,我认为Ajax代码有错误,因为没有显示Handsontable。 感谢。

1 个答案:

答案 0 :(得分:1)

在服务器端,您可以创建一个数组数组

$table[] = array("a");
$table[] = array("b");
echo 'var input = ' . json_encode($table) . ";\n";

这将给出

var input = [["a"],["b"]];

不需要隐藏字段或$.getJSON(),因为这已经是一个javascript数组,可以提供给handsontable

如果你想在客户端进行,循环遍历数组并从JSON条目构建新数组

var json = ["a", "b"];
var input = Array();
for (var i in json)
    input.push([json[i]]);

JSFiddle

您的问题中隐藏字段存在两个问题,首先是您必须在value="..."周围加上引号并转义值内的引号。第二个问题是在jQuery选择器中。 #input_field会查找包含id但不是name的元素。为此,您必须将id="input_field"添加到隐藏输入。