2010-07-19 71 views
0

我已經有一段時間了現在這個問題,但我一直在縮小這個問題,我認爲我現在有主要問題。雖然我的JSONstore正確地調用了PHP,並且螢火蟲確實從數據庫中提供了正確的數據,但它不會顯示在我的網格中。JSONstore沒有正確返回數據

我有一個網格只有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之間的各種不同的人物和標籤,以及日誌條目本身。轉義這些角色會有問題嗎?我只是不太確定它是如何完成的。任何幫助,將不勝感激。

回答

0

您尚未在字段中指定類型和格式。我猜你的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

+0

我剛回頭,看到我貼錯了商店。此外,RecievedAt與Message是分開的,這是我在文章末尾提到的細節。對不起,完全是我的錯。 – TBell 2010-07-19 16:59:03

+0

你能舉一個'inc/interface/config.php?list = messages'返回的json數據的例子嗎?或者,您發佈的文件正在返回的行數是多少?如果是這樣,那不是json,它不會與'JsonStore'一起工作。 – Wolph 2010-07-19 17:18:29

+0

我把它貼在下面,如果你對如何解決這個問題有一個想法,也許通過轉義特殊字符(?),請讓我知道。 – TBell 2010-07-19 19:02:29

0
 
{"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修復它的。