我无法创建正确的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创建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 );
}
?>
]
}
};
答案 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 );