用HTML创建JavaScript数组

Create JavaScript array out of HTML

本文关键字:数组 JavaScript 创建 HTML      更新时间:2023-09-26

我正在一个数组上迭代以显示一些数据,同时创建另一个数组,该数组将用于创建JSON,然后将其分配给JavaScript变量。

<?php
$otherStuff=array();
foreach($myArray AS $row)
{
    echo("<tr data-id='{$row['id']}'><td>{$row['firstname']}</td><td>{$row['firstname']}</td></tr>");
    $otherStuff[$row['id']]=$row['otherStuff'];                
}
echo('<script type="text/javascript">var otherStuff='.json_encode($otherStuff).';</script>');
?>

这似乎不是一个很干净的方式来完成这项任务。相反,我想知道创建一些隐藏的HTML,然后客户端解析它以创建所需的JavaScript变量是否更好。

这样做可能吗?这是个好主意,还是我应该做点别的?如果可能,如何?

感谢

下面是一个基本示例:

$arr = array('stuff' => 'goes here');
echo "<div data-other-stuff='" . htmlspecialchars(json_encode($arr)) . "'></div>";

产品:

<div data-other-stuff='{&quot;stuff&quot;:&quot;goes here&quot;}'></div>

http://codepad.org/Bq5GZcVS

$('div').each(function ea(){
    // Some browsers/versions do not support JSON.parse(), try json2.js
    var data = $(this).attr('data-other-stuff'),
        _data = JSON.parse(data);
    console.log(data, _data);
});

生成(在console中):

'{"stuff":"goes here"}' Object {stuff: "goes here"} 

(第一个实际上是一个字符串,但我添加了单引号以使其显而易见。)

http://jsfiddle.net/0mv44jvd/1

就像任何JSON编码一样,一旦使用它,就必须将其转换为数组或对象。但这仍然有效。