value.table 对于 root 属性是正确的,但是您使用的是 json 格式,我认为 Ext 没有设置为默认处理。它有一个用于读取对象数组的 json 读取器,而不是用于没有对象映射信息的嵌套字段值数组。
如果您必须使用该格式,您将需要创建自己的读取器/写入器或只使用 Ext.Ajax.request(),并在回调中将嵌套数组解析为对象。就像是:
Ext.Ajax.request({
url: 'path.com/to/content',
success: function (response, operation) {
var data = Ext.JSON.decode(response.responseText);
var fields = data.value.table;
var records = [];
Ext.Array.each(fields, function (fieldArray, fieldIndex) {
Ext.Array.each(fieldArray, function(fieldValue, valueIndex) {
//Create record object if it doesn't exist
var record = records[valueIndex] || {};
//Create a switch statement based on the array index to set fields
switch(fieldIndex) {
case 0:
record.User_id = fieldValue;
break;
case 1:
record.Username = fieldValue;
break;
}
});
});
//Add the objects to the empty store
store.add(records);
}
});
无论如何,这都不是生产解决方案,因为它不处理列表末尾的空字符串,或者您在每个字段中得到一个参差不齐的数组数组的情况,我无法想象如何处理。如果它在您的控制或影响范围内,我建议您使用更像 Ext 建议的格式,以便您可以使用内置的 json 代理/读取器/写入器或疯狂使用它并实现 ext 的远程过程调用格式:
{
"success": true,
"message": "Success",
"data": [
{
"User_id": "admin",
"Username": "Administrator"
}, {
"User_id": "admin",
"Username": "Administrator"
}
]
}