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

ここで、createstore変数を割り当てる必要があります。

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_namesPHP 内から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 に答える