extJS: чтение вложенного JSON



У меня есть довольно вложенный JSON, исходящий из вызова ldap_search (). Я хотел бы использовать эту информацию для заполнения ComboBox ExtJS, но у меня возникли некоторые проблемы с читателем. По-видимому, я не могу прочитать информацию, которая мне нужна в ComboBox, то есть почтовый адрес людей, uid и cn



Я думаю, что вся проблема заключается в магазине. Я пытался использовать следующий код:

var store= new Ext.data.JsonStore({
url:'search.php',
root: '',
totalProperty: 'count',
fields: [
{name:'cn', type: 'string', mapping:'cn.0'},
{name:'mail', type: 'string', mapping:'mail.0'},
{name:'uid', type: 'string', mapping:'uid.0'}
]
});


Но поджигатель рассказал мне missing ; before statement return obj.cn.0 in ext-all.js (line 7). Я попробовал использовать другой, более простой массив JSON и это работает, поэтому я действительно думаю, что проблема заключается в этой части кода, особенно в отображении.



Пример JSON, возвращаемого поиском.php это:



{
"count": 2,
"0": {
"mail": {
"count": 1,
"0": "Mail address not registered."
},
"0": "mail",
"uid": {
"count": 1,
"0": "[email protected]"
},
"1": "uid",
"cn": {
"count": 1,
"0": "Surname0 Name0"
},
"2": "cn",
"count": 3,
"dn": "cn=Surname0 Name0,ou=personal,dc=domain,dc=com"
},
"1": {
"mail": {
"count": 1,
"0": "[email protected]"
},
"0": "mail",
"uid": {
"count": 1,
"0": "name1.surname1"
},
"1": "uid",
"cn": {
"count": 1,
"0": "Surname 1 Name 1"
},
"2": "cn",
"count": 3,
"dn": "cn=Surname1 Name1,ou=personal,dc=domain,dc=com"
}
}


Спасибо, что уделили мне время.
631   2  

2 ответов:

Да, эта структура JSON не будет работать сразу со стандартными ExtJS JSONReader. Взгляните на этот пример, взятый из документацииExtJS API о том, как должен выглядеть JSON.

{
    results: 2000, // Reader's configured totalProperty
    rows: [        // Reader's configured root
        // record data objects:
        { id: 1, firstname: 'Bill', occupation: 'Gardener' },
        { id: 2, firstname: 'Ben' , occupation: 'Horticulturalist' },
        ...
    ]
}

Кроме того, требуется опция root config, вы не можете оставить ее пустой. В приведенном выше примере Ваш root будет "строки".

Вам, вероятно, придется сначала разобрать этот ваш JSON в более простой формат, прежде чем передавать его в JSONReader.

Я хотел сделать то же самое, но чтобы один из вложенных элементов был полем в моей диаграмме. Этот пост продолжал появляться, поэтому я подумал, что было бы полезно посмотреть, что я сделал, чтобы решить проблему с диаграммой. Ключ к ее решению-знать, что конфигурация метки существует: http://docs.sencha.com/ext-js/4-0/#! / api / Ext. chart. Label . Используя это, вы можете переопределить рендеринг по умолчанию того, что вы передаете. В этом примере поле "ключ" (не показано здесь, но моя модель использует тип по умолчанию для "ключа" (т. е., не строка)). Ключевой объект передается визуализатору. Используя функцию (t), я теперь могу получить доступ к этому объекту, как javascript, и передать обратно имя под объектом.

 json
    key : { 
            wholePath : "c:/.../fileName.txt",
            fileName : "fileName.txt",
        }
  code:
    axes: [
    {
        title: 'Values',
        type: 'Numeric',
        position: 'left',
        fields: ['value'],
        minimum: 0,
        maximum: 100,
        minorTickSteps: 1
    },
    {
        title: 'File Name',
        type: 'Category',
        position: 'bottom',
        fields: ['key'],
        label: {
            renderer: function(t) {
               var fileName = t.name;
               return fileName;
            }
        }
    }

Comments

    Ничего не найдено.