如何解析来自 extjs 代理的响应?
How to parse a response from extjs proxy?
我收到一个 json 对象作为网络服务的响应,其格式类似于:-
{
studentData:[
{
"history":25,
"science":69,
"maths":45
}
]
}
我正在使用以下代码读取 JSON:-
Ext.define('MyStore.store.dashboard.graphs.Temp', {
extend: 'Ext.data.Store',
proxy: {
type: 'ajax',
url: 'abc.php',
headers: {
'Content-Type': 'application/json'
},
reader: {
type: 'json',
rootProperty: 'studentData',
listeners: {
exception: function(reader, response, error, eOpts) {
console.log('YT reader exception');
console.log(error.message, error);
console.log(response);
}
}
}
我可以解析 JSON 响应,以便它以以下格式存储吗?
{
studentData:[
{
"subject":"History",
"marks":"25"
},
{
"subject":"Maths",
"marks":"25"
}
]
}
我需要在以 xfield 为主题且以 yfield 为标记的图表中显示这些值。
有没有我可以附加到代理的侦听器,以便我可以根据我的要求修改存储结构?
您可以在 reader 中使用 transform
函数:
If a transform function is set, it will be invoked just before
readRecords executes. It is passed the raw (deserialized) data object.
The transform function returns a data object, which can be a modified
version of the original data object, or a completely new data object.
The transform can be a function, or a method name on the Reader
instance, or an object with a 'fn' key and an optional 'scope' key.
根据您使用的 ExtJS 版本,您可以在商店加载数据之前更改 JSON 数据。
ExtJS 4 - 您可以通过扩展 Ext.data.reader.Reader 创建自己的 reader class
class 并覆盖 getResponseData(response) 并更改 json 和 return ResultSet。
ExtJS 5 - 您可以使用 Reader class 的转换功能,并且可以更改响应数据对象。
Ext.create('Ext.data.Store', {
model: 'User',
proxy: {
type: 'ajax',
url : 'users.json',
reader: {
type: 'json',
transform: {
fn: function(data) {
// do some manipulation of the raw data object
return data;
},
scope: this
}
}
},});
我收到一个 json 对象作为网络服务的响应,其格式类似于:-
{
studentData:[
{
"history":25,
"science":69,
"maths":45
}
]
}
我正在使用以下代码读取 JSON:-
Ext.define('MyStore.store.dashboard.graphs.Temp', {
extend: 'Ext.data.Store',
proxy: {
type: 'ajax',
url: 'abc.php',
headers: {
'Content-Type': 'application/json'
},
reader: {
type: 'json',
rootProperty: 'studentData',
listeners: {
exception: function(reader, response, error, eOpts) {
console.log('YT reader exception');
console.log(error.message, error);
console.log(response);
}
}
}
我可以解析 JSON 响应,以便它以以下格式存储吗?
{
studentData:[
{
"subject":"History",
"marks":"25"
},
{
"subject":"Maths",
"marks":"25"
}
]
}
我需要在以 xfield 为主题且以 yfield 为标记的图表中显示这些值。 有没有我可以附加到代理的侦听器,以便我可以根据我的要求修改存储结构?
您可以在 reader 中使用 transform
函数:
If a transform function is set, it will be invoked just before readRecords executes. It is passed the raw (deserialized) data object. The transform function returns a data object, which can be a modified version of the original data object, or a completely new data object. The transform can be a function, or a method name on the Reader instance, or an object with a 'fn' key and an optional 'scope' key.
根据您使用的 ExtJS 版本,您可以在商店加载数据之前更改 JSON 数据。
ExtJS 4 - 您可以通过扩展 Ext.data.reader.Reader 创建自己的 reader class class 并覆盖 getResponseData(response) 并更改 json 和 return ResultSet。
ExtJS 5 - 您可以使用 Reader class 的转换功能,并且可以更改响应数据对象。
Ext.create('Ext.data.Store', {
model: 'User',
proxy: {
type: 'ajax',
url : 'users.json',
reader: {
type: 'json',
transform: {
fn: function(data) {
// do some manipulation of the raw data object
return data;
},
scope: this
}
}
},});