"这篇文档主要介绍了ExtJS框架中如何与数据库进行交互,涵盖了数组、JSON和XML三种数据格式的解析方法。"
在ExtJS中,与数据库交互的关键在于数据存储(`Ext.data.Store`)和数据读取器(`Reader`)。`Reader`的主要职责是将服务器返回的数据解析成`Ext.data.Record`对象,以便于在前端进行操作和展示。以下是三种常见的数据格式及其对应的Reader使用方式:
1. 数组形式数据解析:
在这种情况下,数据以特殊的JSON形式呈现,即一个二维数组。`ArrayReader`是`JsonReader`的子类,适用于这种结构。例如:
```javascript
var store = new Ext.data.Store({
data: [
["陈治文", "男"],
["张妍娜", "女"]
],
reader: new Ext.data.ArrayReader({
}, Ext.data.Record.create(["name", "sex"]))
});
```
`ArrayReader`会将每个数组元素(如`["陈治文", "男"]`)解析成包含`name`和`sex`字段的`Record`对象。
2. JSON形式数据解析:
当数据以标准JSON对象数组的形式返回时,可以使用`JsonReader`。例如:
```javascript
var store = new Ext.data.Store({
data: [
{name: "陈治文", sex: "男"},
{name: "张妍娜", sex: "女"}
],
reader: new Ext.data.JsonReader({
}, Ext.data.Record.create(["name", "sex"]))
});
```
`JsonReader`会遍历每个JSON对象,并将其转换为包含`name`和`sex`字段的`Record`实例。
3. XML形式数据解析:
XML数据的处理相对复杂,因为需要先创建一个XML文档对象。以下是一个简单的示例:
```javascript
var xml = new XML("<table><row><name>陈治文</name><sex>男</sex></row><row><name>张妍娜</name><sex>女</sex></row></table>");
```
之后,可以使用`XmlReader`来解析这个XML文档。`XmlReader`需要配置字段映射(field mappings),以便正确解析XML节点到`Record`的属性。
在实际应用中,通常会通过Ajax请求获取服务器数据,而不是直接在代码中定义数据。`Ext.Ajax.request`方法可以用来发送HTTP请求,服务器返回的数据可以通过配置的`Reader`进行解析,然后填充到`Store`中。例如:
```javascript
Ext.Ajax.request({
url: 'your_server_url',
success: function(response) {
var store = new Ext.data.Store({
reader: new Ext.data.XmlReader({
record: 'row', // XML中的记录节点名
}, ['name', 'sex']),
});
store.loadRawData(response.responseText, true); // 加载并解析数据
}
});
```
通过这些方法,开发者可以方便地利用ExtJS与后端数据库进行交互,展示和操作数据。在实际项目中,还需要考虑错误处理、分页、排序和过滤等功能,以实现更复杂的用户界面和交互。