【问题标题】:Handsontable javascript - loading an array from serverHandsontable javascript - 从服务器加载数组
【发布时间】:2013-01-16 15:01:47
【问题描述】:

我想使用服务器端存在的数组在 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 没有显示。 谢谢。

【问题讨论】:

  • 欢迎来到stackoverflow。如果您发现答案可以解决您的问题,请接受它。你可以投票任何你觉得有帮助的答案。另见How do I ask questions here?

标签: php javascript json handsontable


【解决方案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" 添加到隐藏输入中。

【讨论】:

  • 非常感谢!当我尝试将 JSON 对象发布到客户端时,我也被卡住了。我正在尝试 - 使用隐藏字段 > var x = $('#input_field').val(); - 使用 $.ajax() 或 $.getJSON() 你认为什么是最好的?干杯
  • @user2032001 如果您有可用的数据,当页面发送到客户端时,您既不需要隐藏字段也不需要 ajax 请求。只需将数据嵌入到&lt;script&gt; 标记中即可。
  • 我需要从服务器发布数据,因为数组实际上是一个变量。让我编辑问题以提供更多详细信息。
  • @user2032001 我已经更新了我的答案。正如我所说,您不需要隐藏字段或 getJSON。只需创建一个 javascript 变量 input 即可。
  • 奥拉夫,非常感谢!这无需发布任何内容即可工作,只需在 php 部分中创建 javascript 变量。没有您的帮助,我无法完成此任务,再次感谢。
猜你喜欢
  • 2015-04-03
  • 2013-04-10
  • 2013-07-11
  • 2012-11-03
  • 1970-01-01
  • 2019-05-07
  • 2015-01-17
  • 1970-01-01
  • 2021-07-19
相关资源
最近更新 更多