日期:2014-05-16  浏览次数:20608 次

ExtJs的Ext.create('Ext.data.Store')得到始终空记录!疯了!!!
你说吧!!!这个简单的东西,为什么结果就是0!!!!第一个是javascript前台,第二个是ashx后台。这么简单的东西!!!!
    
var store=Ext.create('Ext.data.Store',{
        model:'Users',
        proxy:{
            type:'ajax',
            url:'App_Ashx/Demo/Grid.ashx',
            reader:{
                //type:'json',
                totalProperty:'totalCount',
                root:'data'
            }
        }
    });
alert(store.getCount());

后台:
    
public void ProcessRequest(HttpContext context)
    {
        context.Response.Clear();
        context.Response.ContentType = "text/plain";
        //context.Response.ContentType = "json/application";
        context.Response.Write("{\"totalCount\":2,\"success\":true,\"data\":[{\"Name\":\"wys\",\"Gender\":\"mail\"},{\"Name\":\"wys1\",\"Gender\":\"mail\"}]}");
    }

------解决方案--------------------
不会C# 但可以指出一个小错误:是male 不是mail
结果为0那个问题 我只能不负责地猜几个原因
1 Ajax是异步传输  你那句alert太快了 数据还没传过来呢
2 检查model user 里面field定义 name gender 了吗
------解决方案--------------------
异步的ajax,ajax没返回数据前就已经执行alert(store.getCount());这句代码了,当然输出0

增加load事件,加载完毕输出才行


var store=Ext.create('Ext.data.Store',{
        model:'Users',
        proxy:{
            type:'ajax',
            url:'App_Ashx/Demo/Grid.ashx',
////////////////////////
            listeners:{load:function(store,records,success,opts){alert(store.getCount())}},
            reader:{
                //type:'json',
                totalProperty:'totalCount',
                root:'data'
            }
        }
    });
alert(store.getCount());