2011-11-22 52 views
0

我嘗試在我的Sencha觸摸應用程序中顯示一些數據,但它不起作用...並且我找不到我做錯了什麼。使用web服務加載senchaTouch應用程序中的數據返回json

我webSiste返回誰像這樣

[{"name":"a","id":1}]

腳本獲取JSON和顯示它JSON對象:

Ext.regApplication({ name: 'Command', 
    phoneStartupScreen: 'phone-startup.png', 
    phoneIcon: 'apple-touch-icon.png', 
    launch: function(){ 
     this.viewport = new Ext.Panel(
     { 
      layout: 'fit', 
      fullscreen: true, 
      items: [{xtype: 'list', 
         itemTpl: new Ext.XTemplate('<div>{name}</div>'), 
         store: stores 
         }], 
      dockedItems: [{xtype: "toolbar", 
          dock: "top", 
          title: 'MovieCommand', 
          items: [{ui: 'back',text: 'back',handler: function(){}}] 
          }] 
     }); 
    } 
}); 

Ext.regModel('Commands', { 
    fields: ['name', 'id' ] 

    }); 

var stores = new Ext.data.Store(
     {model: 'Commands', 
     proxy: {type: 'scripttag', 
       url: 'http://localhost:8080/GTI710/commandes/liste.htm', 

        format: 'sencha', 
       reader: new Ext.data.JsonReader ({ 
         type: 'json', 

        }) 
       }, 

     }); 
stores.load(); 

我沒有任何錯誤在java腳本,但沒有顯示。 我只想顯示「a」但它不起作用,我不知道爲什麼...

回答

0

您正在使用的ScriptTagProxy需要服務器響應,該服務器由合法的Javascript代碼組成。

具體而言,編碼與所需的JSON數據的回調函數你什麼作爲其第一個參數:

someCallback([{ 「名稱」: 「一」, 「ID」:1}] );

someCallback的名稱由Sencha Touch在發送請求時動態生成。換句話說,您嘗試用靜態文件存儲響應將不起作用。

someCallback的名稱作爲Sencha Touch發送的GET請求中的參數傳遞,其中的密鑰默認爲callback

如果你不想有一個網絡服務器作爲數據源,結帳Ext.util.JSONP

+0

感謝您的幫助,我終於成功地做了我想做的事情 – Musashi974