我Default.aspx生成的json代码是,但是到最后alert弹出老实现0,麻烦帮看下
{root:[{"id":"1","name":"小王"},{"id":"1","name":"小李",}]}
var reader = new Ext.data.JsonReader
 ({ 
  root: 'root',
  totalProperty: 'totalCount'       
 }, 
 [{name:"id",mapping:"id"},
 {name:"name",mapping:"name"},
 ]);  var proxy = new Ext.data.HttpProxy
 ({
 url: 'Default.aspx'
 });     
 var SduserData = new Ext.data.Store
 ({                         
 proxy : proxy,
 reader: reader,         
 remoteSort: true
 });
    
 SduserData.load(); 
    
 var s = SduserData.getCount();
 alert(s);

解决方案 »

  1.   

    ajax是异步加载的,你运行到那里的时候store可能还是空的SduserData.on({'load':{
    fn: function(store, records, options){
    //store is loaded, now you can work with it's records, etc.
    alert(store.getCount());//到load事件里才能取到值
    },
    scope:this
    }});
      

  2.   

    我告诉你原因吧,因为上面的ajax请求是异步的,所以SduserData.load(); 这个请求发出之后就返回了,接着马上执行了var s = SduserData.getCount(); alert(s);而这个时候ajax还没有取回结果。当然是0了。你可以采用一种方法解决这种问题:对SduserData添加listener.
      

  3.   

    我是这样写的onReady里的,所以如果加上二楼那段代码是不是就接着
    SduserData.load(); 后面呢? 往楼上两位指点Ext.onReady(function()
    {
    这里就是提题中的代码
    })
      

  4.   

    监听SduserData的Load事件,在事件里alert即可。
      

  5.   

    还有请问获取这个store对象后如何把里面的数据转换成二维数组呢
      

  6.   

    你需要怎么转换呢? 获取的数据已经是封装好的结构化的数据了。我给你做了一个例子:后台是jsp不过不难理解。
    jsonData.html:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>json data ajax example</title>
    <link rel="stylesheet" type="text/css" href="ext/resources/css/ext-all.css" />
    <script type="text/javascript" src="ext/adapter/ext/ext-base.js"></script>
    <script type="text/javascript" src="ext/ext-all.js"></script>
    <link rel="stylesheet" type="text/css" href="grid-examples.css" />
    <script>
    Ext.onReady(function(){
    var reader = new Ext.data.JsonReader 
    ({ 
      root: 'root', 
      totalProperty: 'totalCount'      
    }, 
    [
    {name:"id"}, 
    {name:"name"}, 
    ]); 

    var proxy = new Ext.data.HttpProxy 
    ({ 
    url: 'json.jsp' 
    }); 

        
    var SduserData = new Ext.data.Store 
    ({                        
    proxy : proxy, 
    reader: reader,        
    remoteSort: true
    });

    SduserData.addListener("load", function(store, records, options){
    alert('rows of the data loaded: ' + records.length);
    for(var i=0; i<records.length; i++){
    //获取到的数据records已经是封装好的数据了, 直接用records[i].fieldName就可以读取它。
    alert(records[i].data.name);
    }
    });
    SduserData.load(); 

    });
    </script>
    </head>
    <body><h1>json data ajax example</h1>
    <p>author: sunxing007</p>
    <div id="topic-grid"></div>
    <button id="btn">Get Other Value</button>
    </body>
    </html>json.jsp:<%@ page language="java" contentType="text/html;charset=UTF-8"%>
    <%@ page import="java.io.*"%>
    <%
    String responseString = "{root:[{\"id\":\"1\",\"name\":\"小王\"},{\"id\":\"2\",\"name\":\"小李\"}]}";// 
    response.getWriter().write(responseString);
    System.out.println("responseString: " + responseString);
    response.getWriter().flush();

    %>
      

  7.   

    作extjs关键就是要注意查api document, extjs.com/docs
    有了他, 没有你解决不了的问题。