Php ExtJs 4-带有jsonstore的组合框保持为空

Php ExtJs 4-带有jsonstore的组合框保持为空,php,extjs,combobox,jsonstore,Php,Extjs,Combobox,Jsonstore,我正在尝试使用jsonStore将json数据加载到我的组合框中。 商店正在使用PHP从服务器检索数据 我可以看到服务器正在使用正确的json数据处理PHP请求和响应,但不知何故,组合框保持为空 相关代码: 存储和组合框-组合框位于FormPanel内: var groupsStore= new Ext.data.JsonStore({url:'login.php?action=getGroups', root: 'entities', fields: [{name:'group

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

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

相关代码:

存储和组合框-组合框位于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;
}
可能是PHP返回的数据格式不是JSON?我怎么知道?我什么都不确定

我不明白为什么它不起作用

有什么想法吗


非常感谢。

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

确定。发现了问题

这是我的php代码

除了函数“getGroups”之外,php文件还包括一个html页面,用于加载带有组合框的formPanel

因此,每当我尝试加载到组合框中存储时,它都会从头开始加载整个html和formPanel以及组合框,这会使我的存储数据消失

当我将存储的url设置为包含相同代码但没有html块的其他php文件时,存储将正确加载其数据,一切正常

愚蠢的我:(


希望它能对将来的人有所帮助。

我不明白你的意思。组应该在哪里?并将组名更改为什么?我的意思是,组合框中的“名称”配置是“组”,而不是json响应中的组。实际上,repsonse是根据组件设置时的“名称”配置映射的。这没有帮助。我试图将“name”配置更改为“groupName”并将其删除。在这两种情况下,结果是相同的,组合框中没有数据。“displayField”和“valueField”不是用来进行此映射的吗?不,如果comboStore,即此处的“groupsStore”,没有您试图在combo中设置的值,它将不会像您所拥有的那样e forceSelection:是的。这很奇怪,因为如果我使用与“组”配置相同的组合框,只使用简单的数据存储而不是jsonStore,配置json读取器等,效果会很好。我想知道有什么区别。