我在PHP中有一个assoc数组:
foreach ($result as $value) {
$x++;
$data += array("nds" => array($x => $x), "eds" => array(), "an" => array($x => $this->model->getLng($value)));
}
我将此数组发送到JS文件,它打印如下:
{"nds":{"1":1},"eds":[],"an":{"1":[45.4423073,-75.7979993]}}
但是,我无法访问nds
,因为这会返回undefined:
console.log(data.nds);
答案 0 :(得分:1)
PHP只是将一个字符串发送到JS文件。您首先需要设置一个等于该字符串的变量:
<script>
var json = '<?= $data; ?>';
</script>
现在我们有一个JS变量json
,但它需要转换为一个对象来引用nds
属性。我们可以使用JSON.parse()
执行此操作:
<script>
var json = '<?= $data; ?>';
var data = JSON.parse(json);
console.log(data.nds); // Object {1: 1}
</script>
@RobM提出了一个很好的观点,我们甚至不需要将其解析为字符串,只需将变量设置为JSON转储:
<script>
var data = <?= $data; ?>;
console.log(data.nds); // Object {1: 1}
</script>
这仍然需要您将PHP脚本中的JSON数据({ "nds": { "1": 1 }, "eds": [], "an": { "1": [ 45.4423073, -75.7979993 ] } }
)传递给JS变量。
答案 1 :(得分:0)
您可以使用jQuery JSON解析器或标准Javascript JSON解析器:
var data = '{"nds":{"1":1},"eds":[],"an":{"1":[45.4423073,-75.7979993]}}';
var d = $.parseJSON(data); // jQuery
console.log(d['nds']);
var j = JSON.parse(data); // Javascript
console.log(j['nds']);