Je travaille sur une application Sencha Touch et je ne peux pas obtenir de données de mon service Web.Ext.data.JsonStore getCount() renvoie 0 enregistrements web service
Le code suivant a fonctionné pour un autre utilisateur sur sencha's forums, page 4. Je l'ai modifié pour correspondre à ma sortie de services Web json.
var myStore = new Ext.data.JsonStore({
id: 'Agents',
proxy: new Ext.data.HttpProxy({
url: 'ws/Service.asmx/GetAgents'
,method: 'post'
,jsonData: {}
,headers: { 'Content-Type': 'application/json; charset=utf-8;'}
,reader:{root:'d', record:'rows'}
}),
totalProperty: 'd.totalRows',
idProperty: 'AgentID',
fields: ['AgentID', 'FirstName','LastName'],
autoLoad:'true',
listeners: {
beforeload: function(myStore, options) {
console.log('beforeload: myStore.count = ' + myStore.getCount());
console.log(options);
},
load: function(myStore, records, options) {
console.log('load: ' + myStore.getCount());
console.log(records)
console.log(options);
},
exception: function(misc) {
console.log('exception:');
console.log(misc);
}
}
});
Firebug Sortie de la console:
beforeload: myStore.count = 0
load: 0
[]
true
Firebug confirme le retour de JSON 'ws/Service.asmx/GetAgents' est:
{"d":{"success":true,"totalRows":2,"rows":[{"AgentID":1,"FirstName":"Jelena","LastName":"Akerhus"},{"AgentID":2,"FirstName":"Londo","LastName":"Molari"}]}}
Cependant, quand je tape « MyStore. getCount() 'dans la console, je reçois 0 enregistrements.
Voici la partie du code pour Service.asmx:
[System.Web.Script.Services.ScriptService]
public class Service : System.Web.Services.WebService
{
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json, UseHttpGet = true, XmlSerializeString = false)]
public object GetAgents()
{
List<Agent> agents = new List<Agent>();
agents.Add(new Agent(1, "Jelena", "Akerhus"));
agents.Add(new Agent(2, "Londo", "Molari"));
object data = new { success = true, totalRows = agents.Count, rows = agents };
return data;
}
}
Merci pour la réponse. J'ai ajouté les modifications que vous avez suggérées, mais je reçois toujours 0 à partir de myStore.getCount(). Je vais mettre à jour la question pour refléter vos suggestions et certaines des choses que j'ai essayées. –
Lorsque j'ai ces problèmes, j'utilise la version débogable, non-minifiée, commentée de sencha. Dans ce cas, recherchez JsonStore et définissez des points de rupture dans les méthodes de lecture, passez en revue et observez ce qui ne va pas dans votre configuration. – ballmw
Cela a fonctionné! J'ai dû ajouter les en-têtes Content-Type car il est nécessaire que mon service Web renvoie correctement les données. –