2013-06-13 5 views
0

У меня возникли проблемы с созданием правильного формата JSON, чтобы передать его js из php.
Я использую extjs и в моем tree, мне нужно добавить children:Создание массива JSONs из php

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 «s внутри PHP, то я начинаю переживать вопросы

Это, как я пытаясь создать имя_файла из PHP:

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); 
         } 
        ?> 
        ] 
    } 
}; 
+1

Вы попробовали json_encode? – Jessica

+0

Вы посмотрели мой код? Он есть, я попробовал json_encode – Brian

ответ

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.

0

боюсь его echo json_encode($file_arr); не echo json_encode(file_arr);

+0

Это была ошибка здесь, а не в моем фактическом коде; иначе он не будет компилировать – Brian

Смежные вопросы