0

我在创建正确格式的 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'}],那么一切都很好
  • 当我尝试file_names从 php 中创建 this 的内容时,我开始遇到问题

这就是我尝试从 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 );
                         }
                    ?>
                    ]
    } 
};
4

2 回答 2

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; ?>
} 

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

于 2013-06-13T01:22:12.697 回答
0

恐怕echo json_encode($file_arr );不是echo json_encode(file_arr );

于 2013-06-13T01:04:59.530 回答