Ext 新new的 data.store对象怎么里面没有值、
[code="java"]
function getstore(){
var b = new Ext.data.Store( {
id:"bst",
proxy :new Ext.data.HttpProxy( {
url :__ctxPath + "/st/findFormula.do"
}),
reader :new Ext.data.JsonReader( {
root :"result",
totalProperty :"totalCounts",
fields : [ {name :"Id",type :"int"}, "Name" ]
}),
});
b.load()
return b;
}
[/code]
方法返回b之后 b里没有任何值 是空的 但是我确定后台查出来是有json数据的
我现在要获得后台查出来的那些数据怎么办
高人现身吧!
设置store proxy 对象,使用同步数据加载。
proxy:Ext.data.HttpProxy({
sync : true
})
如果使用的是3.0以下可能需要加下面代码设置同步处理
Ext.lib.Ajax.request = function(method, uri, cb, data, options) {
if (options) {
var hs = options.headers;
if (hs) {
for (var h in hs) {
if (hs.hasOwnProperty(h)) {
this.initHeader(h, hs[h], false);
}
}
}
if (options.xmlData) {
if (!hs || !hs['Content-Type']) {
this.initHeader('Content-Type', 'text/xml', false);
}
method = (method ? method : (options.method
? options.method
: 'POST'));
data = options.xmlData;
} else if (options.jsonData) {
if (!hs || !hs['Content-Type']) {
this.initHeader('Content-Type', 'application/json', false);
}
method = (method ? method : (options.method
? options.method
: 'POST'));
data = typeof options.jsonData == 'object' ? Ext
.encode(options.jsonData) : options.jsonData;
}
}
return this"sync" in options ? "syncRequest" : "asyncRequest";
}
Ext.lib.Ajax.syncRequest = function(method, uri, callback, postData) {
var o = this.getConnectionObject();
if (!o) {
return null;
} else {
o.conn.open(method, uri, false);
if (this.useDefaultXhrHeader) {
if (!this.defaultHeaders['X-Requested-With']) {
this
.initHeader('X-Requested-With', this.defaultXhrHeader,
true);
}
}
if (postData && this.useDefaultHeader
&& (!this.hasHeaders || !this.headers['Content-Type'])) {
this.initHeader('Content-Type', this.defaultPostHeader);
}
if (this.hasDefaultHeaders || this.hasHeaders) {
this.setHeader(o);
}
o.conn.send(postData || null);
this.handleTransactionResponse(o, callback);
return o;
}
}
在你使用的时候需要注意,store使用的是异步加载。直接时候的话可能数据还没载入完成。
store.on('load',function(){
})
在执行load事件才能确定数据已经载入
store.on('load',function(s,records){ //第一个参数是store。
alert(Ext.encode(s.data));//可以打印数据
})
事件函数里。有store触发。使用return没有效果。一般只是在里面写一些业务方面;
store使用的是异步数据加载。在触发load函数之后store里面是有数据了。你可以通过load函数写相应业务。或者让store使用同步数据加载。