2011-06-01 34 views
0

我有以下非常簡單的Ext JS 4腳本,它應該從URL中獲取兩行並將其顯示在Ext JS網格面板中。 - 工程 將遠程數據加載到ExtJS-Grid-Panel失敗,取決於使用的URL

  • /admin/ext-list-searches < -fails
  • 兩個URL與相同返回相同的內容(沿

    1. /server.php <:

      Ext.define('Entry', { 
          extend: 'Ext.data.Model', 
          fields: [ 
           {name: 'id', type: 'int'}, 
           {name: 'val' } 
          ] 
      }); 
      
      var store = Ext.create('Ext.data.Store', { 
          model: 'Entry', 
          proxy: { 
           type: 'ajax', 
           //url: '/admin/ext-list-searches', // does not work 
           url: '/server.php', // works 
           reader: { 
            type: 'json', 
            root: 'entries' 
           } 
          }, 
          autoLoad: true  
      }); 
      
      var grid = Ext.create('Ext.grid.Panel', { 
          store: store, 
          columns: [ 
           { 
            text  : 'id', 
            dataIndex: 'id' 
           }, 
           { 
            text  : 'val', 
            dataIndex: 'val' 
           } 
          ], 
          title: 'Test', 
          renderTo: 'ext-content' 
      }); 
      

      我有兩個網址測試它HTTP響應頭):

      {"entries":[{"id":1,"user":"Chris"},{"id":2,"user":"Paul"}]} 
      

      案例1正常工作:

      screenshot_success

      然而,情況2不顯示任何內容:

      enter image description here

      的數據是根據螢火蟲在這兩種情況下正確加載。

      這對我沒有任何意義。有沒有我不知道的路徑限制?

      我已經看到了在Chrome和Firefox 4,這種行爲我使用的Ext JS 4.0.1

    回答

    0

    通過試驗和錯誤,我能夠解決這個問題。但是,我對Ext JS的瞭解很低,不知道原因。

    這兩個URL之間的區別是響應時間。每當我添加延遲以使server.php稍後作出響應時,它的行爲與其他URL相同。

    解決它是把網格到面板的方式:

    var displayPanel = new Ext.Panel({ 
        width : 650, 
        height : 300, 
        layout: 'fit', 
        renderTo : 'ext-content', 
        items : [ grid ] 
    }) 
    

    這是某種方式與負載指示有關。

    相關問題