用HTML创建JavaScript数组

时间:2014-10-12 15:28:32

标签: javascript php jquery json

我在迭代数组以显示一些数据,同时创建另一个数组,用于创建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变量。

这样做可能吗?这是一个好主意,还是我应该做些什么呢?如果可能,怎么样?

谢谢

1 个答案:

答案 0 :(得分:1)

这是一个基本的例子:

$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编码一样,一旦你使用它就必须把它变成一个数组或对象。但这一切都是一样的。