ExtJs 4 - 与jsonstore的combobox保持空白

时间:2014-02-17 13:05:20

标签: php extjs combobox jsonstore

我正在尝试使用jsonStore将json数据加载到我的组合框中。 该商店使用PHP从服务器检索数据。

我可以看到服务器正在使用正确的json数据处理PHP请求和响应,但不知何故,组合框保持为空。

相关代码:

商店和ComboBox - ComboBox在FormPanel中:

var groupsStore= new Ext.data.JsonStore({url:'login.php?action=getGroups',
    root: 'entities',
    fields: [{name:'groupName', mapping:'groupName'}]
});

LoginWin = function(cfg) {

this.form = new Ext.form.FormPanel({
    labelWidth:60, baseCls:'x-plain', autoHeight:true, style:'padding:5px',
    items:[
        {xtype:'combo', name:'groups', fieldLabel:'Group', store:groupsStore, 
displayField:'groupName', valueField:'groupName', emptyText:'Pick group...',    mode:'remote', anchor:'95%', allowBlank:false, enableKeyEvents:true, triggerAction:'all', forceSelection:true
        , listeners:{keypress:{scope:this, fn:function(fld,e){ if(e.getKey()==e.ENTER) doLogin();}}
         }}
    ]
});

从服务器返回的json数据:

{"entities":[{"@type":"webGroup","groupId":"1","groupName":"TEST","groupUsers":
 [{"groupUserId":"2","groupUserName":"FOO","password":"123456"},
 {"groupUserId":"1","groupUserName":"FOO","password":"654321"}],"system":"BLA"},
 {"@type":"webGroup","groupId":"2","groupName":"TESTOS","system":"BLA"}]
,"success":"true"}

PHP代码:

function getGroups(){
    error_log("API_host: ".$API_host, 0);
    global $API_host;
    error_log("API_host: ".$API_host, 0);

    $url="$API_host/GroupUser/groups";
    error_log("url: ".$url, 0);
    $jsonData = curl_request($url);

    if (!$jsonData) die("{success:false, message:'Connection Error'}");

    echo $jsonData;
}

也许从JSON以外的PHP格式返回的数据?我怎么知道呢?我不确定。

无法理解为什么它不起作用。

任何想法?

非常感谢。

2 个答案:

答案 0 :(得分:0)

他们应该在您的json响应中或将组合名称更改为 groupName

答案 1 :(得分:0)

行。发现了问题。

这是我的PHP代码。

php函数'getGroups'旁边的php文件还包含一个html页面,用于加载带有comboBox的formPanel。

因此,每当我尝试加载存储到comboBox中时,它会从头开始使用formPanel和comboBox加载整个html - 这会使我的商店数据消失。

当我将商店的网址设置为包含相同代码但没有html块的其他php文件时,商店会正确加载数据并且一切正常!

傻傻的我:(

希望将来会帮助某人。