从php创建JSON数组

时间:2013-06-13 00:27:30

标签: php ajax json extjs4.2 jsobject

我无法创建正确的JSON格式,无法从php传递给js。
我使用的是extjs,在我的tree中,我需要添加children

var treePanel = Ext.create('Ext.tree.Panel',
{
    id: 'tree-panel',
    region: 'north',
    split: true,
    height: '50%',     
    minSize: 150,
    rootVisible: false,
    autoScroll: true,
    store: store,
    listeners: {// more code here}
});

现在我需要指定创建 store 变量:

var store = Ext.create('Ext.data.TreeStore', 
{
    root: 
    {
        expanded: false,
        children: file_names
    }
});

现在,当我必须在file_names代码中创建 php 对象时,会出现问题。

  • 如果我有file_names = [{text: 'google', leaf: true, icon: 'pic.png'}, {text: 'yahoo', leaf: true, icon: 'pic.png'}],那么一切都很好
  • 当我尝试在php中创建这个file_names的内容时,我开始遇到问题

这就是我尝试从php创建file_name的方法:

var store = Ext.create('Ext.data.TreeStore', 
{ 
    root: 
    {
        expanded: false,
        children: [ 
                  <?php
                        $name      = empty($_GET['name']) ? false : $_GET['name'];
                        $files     = empty($_GET['files']) ? false : $_GET['files'];

                        if ($name)
                        {
                        //    $files_arr = explode(',', $files);    
                            $file_arr = array('text'=>$files_arr[0], 'leaf'=>true, 'icon'=>'images/xml.png');

                            //echo stripslashes(json_encode($file_arr));
                            echo json_encode($file_arr );
                         }
                    ?>
                    ]
    } 
};

2 个答案:

答案 0 :(得分:1)

尝试这种方式:

<?php
$name      = empty($_GET['name']) ? false : $_GET['name'];
$files     = empty($_GET['files']) ? false : $_GET['files'];

if ($name)
{
    $files_arr = explode(',', $files);    

    foreach ($files_arr as $value)
    {
        $file_arr[] = array(
        'text' => $value, 
        'leaf' => true, 
        'icon' => 'images/xml.png'
        );
    }       
}

$var = json_encode($file_arr);
echo $var;

测试:

http://localhost/test.php?name=test&files=google,yahoo

给我们:

'[{"text":"google","leaf":true,"icon":"images\\/xml.png"},{"text":" yahoo","leaf":true,"icon":"images\\/xml.png"}]'

输出就像这样:

root: 
{
    expanded: false,
    children: <?php echo $var; ?>
} 

ie:删除 [''] json_encode 负责正确格式化javascript代码所需的一切。

答案 1 :(得分:0)

我担心echo json_encode($file_arr );不是echo json_encode(file_arr );