我有一个以下的json数组树
{"arrayTree":[{
"root":"0",
"id":"19",
"name":"Rose",
"childs":[{
"root":"19"
"id":"22",
"name":"Ceema",
"childs":[{
"root":"22",
"id":"49",
"name":"Chandar"
}]
},
{
"root":"19",
"id":"23",
"name":"Ben"
}]
}]}
我的jquery函数是:
function demo(m) {
var j = jQuery.parseJSON(m);
var c = Object.keys(j).length;
for(var i = 0; i < c; i++) {
if(Object.keys(j)[i] == "[object Object]") {
var v = Object.keys(j)['childs'];
demo(v);
}
if(Object.keys(j)[i] != "[object Object]") {
alert(Object.keys(j)[i]);
}
}
}
这里变量m是json数组树。但这不起作用
注意:M使用codeigniter
答案 0 :(得分:1)
Trait<Item=char>
不起作用的原因是由于双引号(包含单引号)包含双引号。单引号很好,但HTML解析器会被双引号内未转义的双引号混淆。
解决方法非常简单。
由于JSON只是javascript object-literal所写内容的严格子集,因此<button onclick="demo('<?php $map ?>')">Click</button>
可以代表您对对象文字进行硬编码的任何地方。
因此,以下内容应该有效:
<?php $map ?>
因此,javascript解释器将创建一个javascript对象,它反映了PHP变量<head>
...
<script>
jQuery(function($) {
$("#demo").on('click', function() {
var myObject = <?php $map ?>;
demo(myObject);
});
// *** or ***
$(function() {
$("#demo").on('click', function() {
demo(<?php $map ?>);
});
});
});
</script>
...
</head>
<body>
...
<button id="demo">Click</button>
...
</body>
并将其传递给
$map
。
答案 1 :(得分:0)
看看这个链接
http://www.elated.com/articles/json-basics/
我不完全确定您的JSON对象来自哪里,但在PHP中,您必须将其设置为实际数组而不是典型的JSON格式。所以它看起来像这样:
$arrayTree = array(
"root" => "0" ,
"id" => "19" ,
"name" => "Rose" ,
"childs" => array(
a whole bunch of nested arrays...
)
);
$map = json_encode($arrayTree) ;
然后在您的JavaScript函数中,由于您正在使用jQuery,因此请在对象上使用parseJson()
将其转换为JavaScript对象。然后,您可以从该对象调用所有内容。
另外,在onclick="demo('<?php $map ?>')"
中demo(<?php echo $map ?>)
。