JSONstore не возвращает данные должным образом - PullRequest
0 голосов
/ 19 июля 2010

Я уже некоторое время сталкиваюсь с этой проблемой, но я продолжаю сужать проблему и думаю, что теперь у меня есть основная проблема. Хотя мой JSONstore правильно обращается к PHP, а firebug действительно возвращает мне правильные данные из базы данных, они не будут отображаться в моей сетке.

У меня есть сетка с только 2 столбцами даты и записи из журнала. Когда я вынимаю запись в журнале, на сетке будет просто отображаться дата, а когда я просто создаю массив со статическими данными из журнала, он также хорошо отображается на сетке. Я думаю, что мой JSONstore просто неправильно анализирует данные из таблиц mysql.

Мой код:

  var logStore = new Ext.data.JsonStore({
    autoLoad: true,
    url: 'inc/interface/config.php?list=messages',
    root: 'dates',
    idProperty: 'ID',
    fields: ['ID', 'ReceivedAt', 'Message'],
    listeners: {
                loadexception: function() {
                    console.log('load failed -- arguments: %o', arguments);
                }
        }
}); 

  var logGrid = new Ext.grid.GridPanel({
        region: 'center',
        store: logStore,
        colModel: new Ext.grid.ColumnModel({
            columns: [{
                id: 'received',
                header: 'Received',
                dataIndex: 'ReceivedAt',
                width: 250
            },{
                id: 'message',
                header: 'Logs',
                dataIndex: 'Message',
                width: 750
            }]
        })
    });

Пример записи в журнале:

| Apr 9 00:00:02 dh1 dhcpd: Added new forward map from nfxxxxich-PC.wifi-uhs.osu to 10.xxx.xx.248 |
| Apr 9 00:00:02 dh1 dhcpd: added reverse map from 248.xxxx.xxx.10.in-addr.arpa. to nxxxxxh-PC.wifi-uhs.osu |
| Apr 9 00:00:02 dh1 dhcpd: DHCPREQUEST for 10.xxx.xxx.248 from 00:x:5c:x:8c:xx (nxxxxh-PC) via 10.xxx.xxx.254 |
| Apr 9 00:00:02 dh1 dhcpd: DHCPACK on 10.X.XX.248 to 00:X:5c:X8c:XX (nXXXich-PC) via 10.193.XX.XXX |
| Apr 9 00:00:02 dh1 dhcpd: Added new forward map from XX.wifi-uhs.XXX to 10.X.X.242 |
| Apr 9 00:00:02 dh1 dhcpd: added reverse map from 242.X.193.X.in-addr.arpa. to X.wifi-uhs.XXX |
| Apr 9 00:00:02 dh1 dhcpd: DHCPREQUEST for 10.X.X.242 from 00:X:ce:X21:63 (elena) via 10.X.X.254 |
| Apr 9 00:00:02 dh1 dhcpd: DHCPACK on 10.193.XXX.XX to 00:X:ce:X:21:63 (elena) via 10.X.X.254 |
| Apr 9 00:00:02 dh1 dhcpd: Added new forward map from P305-XXX.wifi-uhs.XXX to 10.193.X.X |
| Apr 9 00:00:02 dh1 dhcpd: added reverse map from 21.241.X.X.in-addr.arpa. to P305-XXXX.wifi-uhs.XXX |

Существуют различные символы и вкладки между датой, dh1 и самой записью журнала. Может ли быть проблема с побегом этих персонажей? Я просто не совсем уверен, как это делается. Любая помощь будет оценена.

Ответы [ 2 ]

0 голосов
/ 19 июля 2010
{"dates":[{"ID":"18","ReceivedAt":"2010-07-07 11:37:42","Message":"Apr  9 00:00:03 dh1 dhcpd: added reverse map from 244.xxx.xxx.10.in-addr.arpa. to xxx.wifi-uhs.xxx"},{"ID":"19","ReceivedAt":"2010-07-07 11:37:42","Message":"Apr  9 00:00:03 dh1 dhcpd: DHCPREQUEST for 10.xxx.xxx.244 from 00:xx:f0:xx:d5:xxx (xxx) via xx.x.xxx.254"},{"ID":"20","ReceivedAt":"2010-07-07 11:37:42","Message":" [origin software="rsyslogd" swVersion="3.22.1" x-pid="5222" x-info="http://www.rsyslog.com"] (re)start"},{"ID":"21","ReceivedAt":"2010-07-07 11:37:42","Message":"WARNING: rsyslogd is running in compatibility mode. Automatically generated config directives may interfer with your rsyslog.conf settings. We suggest upgrading your config and adding -c3 as the first rsyslogd option."},{"ID":"22","ReceivedAt":"2010-07-07 11:37:42","Message":"the last error occured in /etc/rsyslog.conf, line 38"},{"ID":"23","ReceivedAt":"2010-07-07 11:37:42","Message":"warning: selector line without actions will be discarded"},{"ID":"24","ReceivedAt":"2010-07-07 11:37:42","Message":"CONFIG ERROR: could not interpret master config file '/etc/rsyslog.conf'. [try http://www.rsyslog.com/e/2123 ]"},{"ID":"25","ReceivedAt":"2010-07-07 11:37:42","Message":"Warning: backward compatibility layer added to following directive to rsyslog.conf: ModLoad imuxsock"}]}

На самом деле я нашел проблему, и это не мой код. Я ограничил свой PHP только 19-ю записями, и это работает, именно на той 20-й записи я получаю другой тип журнала, который портится в моей сетке и ничего не отображается. Я думаю, что это связано со специальными символами в журнале.

В любом случае, это ошибка в Rsyslog, которую я использую для вывода их в mysql. Не уверен, как именно я мог это исправить через php / extjs.

0 голосов
/ 19 июля 2010

Вы не указали тип и формат в полях.И я предполагаю, что ваша реализация php json не генерирует объект javascript Date.

Итак ... попробуйте вернуть метку времени Unix и использовать ее в качестве полей:

fields: [
  {name: 'ID', type: 'int'},
  {name: 'ReceivedAt', type: 'date', dateFormat: 'Y-m-d H:i:s'},
  'Message'
]

При желании вы также можете указать dateFormat рядом с type: 'date'.См. Документацию для получения дополнительной информации: http://www.sencha.com/deploy/dev/docs/?class=Ext.data.Field

...