Ext.data.JsonStore getCount()返回0条记录Web服务

|| 我正在使用Sencha Touch应用程序,无法从Web服务获取数据。 以下代码在sencha \的论坛上的另一个用户上起作用,第4页。我已对其进行了修改,以匹配我的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控制台输出:
beforeload: myStore.count = 0
load: 0
[]
true
Firebug确认从\'ws / Service.asmx / GetAgents \'返回的JSON为:
{\"d\":{\"success\":true,\"totalRows\":2,\"rows\":[{\"AgentID\":1,\"FirstName\":\"Jelena\",\"LastName\":\"Akerhus\"},{\"AgentID\":2,\"FirstName\":\"Londo\",\"LastName\":\"Molari\"}]}}
但是,当我在控制台中键入\'myStore.getCount()\'时,我得到0条记录。 这是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;

    }
}
    
已邀请:
这对我有用,我单独注册了模型,但使用了数据类型。我将商店与JsonReader结合使用,删除了您添加的一些额外内容。希望这对您有用...
      Ext.regModel(\'Agent\', {
        idProperty:\'AgentID\',
        fields: [{name:\'AgentID\', type:\'int\'},{name:\'FirstName\', type:\'string\'},{name:\'LastName\', type:\'string\'}]
      });

      var store = new Ext.data.Store({
        model  : \'Agent\',
        proxy: 
        {
           type:\'ajax\',
           url:\'test.json\',
           reader:{
             type:\'json\',
             root:\'d.rows\',
             totalProperty: \'d.totalRows\'
           }
        },
        autoLoad:\'true\'
      });

      var list = new Ext.List({
        fullscreen: true,
        itemTpl : \'{FirstName} {LastName}\',
        store: store
      });
      list.show();
    

要回复问题请先登录注册