Search code examples
jsonloadsencha-touch

Load data from bd in senchaTouch app using webservice who return a json


I try to display some data in my Sencha touch application, but it doesn't work... and i can't find what I'm doing wrong.

My webSiste return a json object who look like this

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

the script is getting the Json and display it:

    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();

I don't have any error in the java script but nothing is displayed. I just want to have the "a" displayed but it doesn't work, I don't know why...


Solution

  • The ScriptTagProxy, which you are using, requires a response from server that's composed of legitimate Javascript code.

    Specifically, the code is a callback function with the desired JSON data you what as the its first argument:

    someCallback([{"name":"a","id":1}]);

    The name of someCallback is generated dynamically by Sencha Touch when the request is sent. In other words, your attempt to store the response with a static file will not work.

    The name of someCallback is passed as a parameter in the GET request sent by Sencha Touch, the key of which defaults to callback.

    If you don't want to have a web server as the data source, checkout Ext.util.JSONP.