Extjs - 来自php文件的数据的Combobox无效

时间:2013-07-08 02:53:25

标签: extjs combobox extjs4 extjs4.1

我有一个组合框,我想从php服务器获取数据
这是我的Index.html代码 http://jsfiddle.net/UQcgA/

这是我的data.php文件。
但是当我点击组合然后没有显示:(。我怎么能解决这个问题

<?php
// function to create json
function GetCategories() {
    $categories = "{'rows':[";
    $categories = "{'id':'1', 'name':'Category 1'},";
    $categories .= "{'id':'2', 'name':'Category 2'},";
    $categories .= "{'id':'3', 'name':'Category 3'}";
    $categories .= "]}";
    return $categories;
}
echo GetCategories(); // sent to client
?>

1 个答案:

答案 0 :(得分:0)

主要问题在于您的商店定义。您正在使用ExtJS 3的定义。这是在ExtJS 4.1中定义存储的正确方法:

        var values = new Ext.data.Store({
            fields: [
                {name: 'id', type: 'integer'},
                {name: 'name', type: 'string'}
            ],
            proxy: new Ext.data.HttpProxy({
                url: 'data.php',
                reader: {
                    type: 'json',
                    root: 'rows'
                }
            }),
            autoLoad: true
        });

你的json data也有问题(你在第二行也错过了一段时间)。这将有效:

// function to create json
function GetCategories() {
    $categories = '{"rows": [';
    $categories .= '{"id": "1", "name": "Category 1"},';
    $categories .= '{"id": "2", "name": "Category 2"},';
    $categories .= '{"id": "3", "name": "Category 3"}';
    $categories .= "]}";
    return $categories;
}
echo GetCategories(); // sent to client
?>

注意:使用json_encode构建JSON字符串始终是最佳做法,请参阅this answer