请在下面提到的情况下帮助我;
我的java Web应用程序使用JSON作为数据交换格式。在跑步的时候; firebug(firefox)按预期显示响应和JSON数据;但网格未按预期更新,而是空白。以下是商店和网格定义;
//Grid & Store definition
var searchResultStore = Ext.create('Ext.data.JsonStore', {
model : 'BookModel',
proxy : {
type : 'ajax',
reader : {
totalProperty : 'results',
type : 'json',
root : 'data'
}
},
autoLoad : true
});
Ext.define('Library.SearchBookGrid', {
extend : 'Ext.grid.Panel',
alias : 'widget.SearchBookGrid',
id : 'searchBookGrid',
title : 'Books',
closable : true,
initComponent : function() {
this.store = searchResultStore;
this.columns = [ {
xtype : 'gridcolumn',
dataIndex : 'title',
text : 'Title'
}, {
xtype : 'gridcolumn',
dataIndex : 'authorName',
text : 'Author'
} ];
this.callParent(arguments);
}
});
有一个BOOK SEARCH ExtJS表格;它调用一个URL(/ MyLibrary / Books?action = 6)&搜索表单值以JSONDATA的形式提交。搜索结果被分配为商店(searchResultStore)跟随;
Ext.Ajax.request({
url : '/MyLibrary/Books?action=6',
headers: {'Content-Type':'application/json; charset=utf-8'},
jsonData : Ext.JSON.encode(form.getValues()),
params:{
action : 6
},
method : 'POST',
success : function(response, request) {
searchResultStore.loadData(Ext.JSON.decode(response.responseText));
},
failure : function(results, request) {
Ext.Msg.alert("Search..", "Please try again...!!");
},
});
我错过了什么或者我错了这个代码......请帮忙...... !!!!
提前致谢...... !!
答案 0 :(得分:1)
鉴于我看到你用一个根数据把读者放在商店里,我希望你用来加载数据的json不是那种格式。
loadData函数需要一个模型数组或一个元素数组。
像[{"id":1},{....
我关心的是你尝试使用读者,你的json看起来像:
{"data":[{"id:1},{.....
然后这可能不是问题。我希望它有所帮助
编辑以及我在第一条评论中试图说的问题,您在商店中设置的阅读器仅在通过加载功能加载商店时使用。 LoadData需要一个数组,所以如果你想快速修复,请尝试:
searchResultStore.loadData(Ext.JSON.decode(response.responseText).data);
但我建议您使用store load方法而不是使用reader的ajax请求。
searchResultStore.load({
url : '/MyLibrary/Books?action=6',
jsonData : Ext.JSON.encode(form.getValues()),
extraParams:{
action : 6
},
})
检查load函数的文档并查看它可以采用的参数