无法将json数组树作为jquery方法参数传递

时间:2015-05-24 13:01:22

标签: jquery json

我有一个以下的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

2 个答案:

答案 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 ?>)