1

我想使用服务器端存在的数组在 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);

在阿贾克斯:

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

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

4

1 回答 1

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查找带有 aid但不带有 a的元素name。为此,您必须添加id="input_field"到隐藏输入。

于 2013-02-01T10:40:09.490 回答