使用Extjs 3.4
我的Web服务使用json字符串进行响应:{"msg":"Some"}
我想用Some
填充网格。
Ext.onReady(function(){
var store = new Ext.data.JsonStore({
url: "my/json/url.json",
fields: [{name:"msg"}]
});
function StoreLoadCallback(records, operation, success){
if (success) {
console.log(records); // record is undefined
alert(records); // show 'undefined'
} else {
console.log('error');
}
}
function ajaxSearch_function(){
var query = Ext.getCmp('search').getValue();
store.load({
params: {query: query},
callback: StoreLoadCallback
});
}
var form = new Ext.FormPanel({
defaultType: 'textfield',
items: [{
fieldLabel: 'search',
name: 'search',
id: 'search'
}],
buttons: [{
text: 'Search', handler: ajaxSearch_function
}]
});
form.render('ajax-search_form');
var grid = new Ext.grid.GridPanel({
store: store,
columns: [{
id :'title',
header : 'title',
sortable : true,
dataIndex: 'title'
}],
});
grid.render('ajax-grid');
});
Web服务响应很好,我已经使用Curl进行了测试。 问题是用json响应填充网格。
答案 0 :(得分:1)
如果您说回调方法中的记录变量未定义,则解析响应可能存在问题。我想它需要数组而不是一条记录。尝试将json文件的内容从{"msg" : "Some"}
更改为[{"msg" : "Some"}]
在跨过这个障碍(即正确解析了响应)之后,我看到你的datagrid列引用了" title"而不是" msg"。标题不是商店的成员,因此列无论如何都会显示空值。
此外,以大写字母开始方法名称并不常见(除了它们代表"类"),因此调用方法storeLoadCallback而不是StoreLoadCallback更好。