Javascript 将PHP assoc数组转换为json对象
我在PHP中有一个assoc数组:Javascript 将PHP assoc数组转换为json对象,javascript,php,Javascript,Php,我在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"
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,因为它返回未定义的:
console.log(data.nds);
PHP只是向JS文件发送一个字符串。首先需要设置一个等于该字符串的变量:
<script>
var json = '<?= $data; ?>';
</script>
@RobM说得很好,我们甚至不需要将其解析为字符串,只需将变量设置为JSON转储:
<script>
var data = <?= $data; ?>;
console.log(data.nds); // Object {1: 1}
</script>
var数据=;
console.log(data.nds);//对象{1:1}
这仍然需要您将JSON数据(
{“nds”:{“1”:1},“eds”:[],“an”:{“1”:[45.4423073,-75.7979993]}}
)从PHP脚本传递到JS变量中。您可以使用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']);
示例:在本例中,我得到:Uncaught TypeError:无法读取未定义的属性'length'。此(
var json='';
)不一定有效,您如何在当前代码中从PHP输出json字符串?我的代码假设PHP变量$data
被传递给您的JS代码。{“nds”:{“1”:1},“eds”:[],“an”:{“1”:[45.4423073,-75.7979993]}要让我的上述代码正常工作,您需要有以下JS行:var json='{“nds”:{“1”:1},“eds”:,“an:{“1”:[45.4423073,-75.7979993]}};
。根据您的设置,这应该很容易。但是在字符串成为JS变量之前,我们不能进行任何JS解析。为什么不省略引号呢?这样您就不必JSON.parse
是否可以让类似console.log(j.nds[0])的东西访问它;
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']);