2014-02-17 3 views
0

Я пытаюсь загрузить данные json в свой поле со списком с помощью jsonStore. В магазине используется PHP для извлечения данных из терминала.ExtJs 4 - combobox с jsonstore остается пустым

Я вижу, что сервер обрабатывает PHP-запрос и ответ с надлежащими json-данными, но как-то 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"} 

The 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? Как я могу это знать? Я ничего не знаю.

Не могу понять, почему он не работает.

Любые идеи кто-нибудь?

Большое спасибо.

ответ

0

OK. Нашел проблему.

Это был мой PHP-код.

Файл php, помимо функции getGroups, включает также страницу html, которая загружает formPanel с помощью comboBox.

Так что всякий раз, когда я пытаюсь загрузить содержимое в comboBox, он загружает весь html с помощью formPanel и comboBox с нуля - что делает мои данные хранилища исчезающими.

Когда я устанавливаю URL-адрес магазина в другой файл php, который содержит тот же код, но без блока html, хранилище загружает его данные правильно и все работает!

Глупого меня :(

Надеется, что это поможет кому-то в будущем.

0

Их должно быть группы в своем ответе JSon или изменить имя комбо Groupname.

+0

Не может понять, что вы имеете в виде. Где должна быть группы? И изменить Groupname к чему? – yanivsh

+0

Я хочу сказать, что конфигурацией «name» в вашем combobox является «группы», которая не является их ответом json.Actuallty ответ отображается на основе конфигурации «имени» компонентов при установке. – Dev

+0

Это не помогло. изменить конфигурацию «name» на «groupName», а также удалить ее. В обеих ситуациях результат будет таким же, данные в поле со списком не являются «displayField» и «valueField», чтобы сделать это сопоставление? – yanivsh

Смежные вопросы