我正在尝试使用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格式返回的数据?我怎么知道呢?我不确定。
无法理解为什么它不起作用。
任何想法?
非常感谢。
答案 0 :(得分:0)
他们应该在您的json响应中组或将组合名称更改为 groupName 。
答案 1 :(得分:0)
行。发现了问题。
这是我的PHP代码。
php函数'getGroups'旁边的php文件还包含一个html页面,用于加载带有comboBox的formPanel。
因此,每当我尝试加载存储到comboBox中时,它会从头开始使用formPanel和comboBox加载整个html - 这会使我的商店数据消失。
当我将商店的网址设置为包含相同代码但没有html块的其他php文件时,商店会正确加载数据并且一切正常!
傻傻的我:(希望将来会帮助某人。