---
title: "表格与数据同步"
description: "Grid 行操作、数据收集、同步、上传与提交。 共 25 个 Wb 公共方法。"
---

> Documentation Index
> Fetch the complete documentation index at: https://ag.879818327.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# 表格与数据同步

本文档由项目中的 `wb-debug.js` 自动提取。每个条目包含源码提炼的使用说明、优先采用源码示例的用法示例，以及完整 JSDoc 供参数和行为核对。

## Wb.exportData

```javascript
Wb.exportData(l, k, m);
```

源码：`wb-debug.js:3316`

**使用说明**

压缩风格实现的表格导出入口。它从表格或 store 读取列、行、分页和格式元数据，构造 __metaParams 后通过 Wb.download 或 Wb.submit 发送到 transfer 地址。调用方式与 exportDataold 保持兼容。

**用法示例**

以下示例依据函数体中的实际调用关系整理。

```javascript
Wb.exportData(app.grid, "excel", false);
```

**源码注释**

```javascript
/**
 * 源码未提供 JSDoc。
 */
```

## Wb.update

```javascript
Wb.update(record, data, commit);
```

源码：`wb-debug.js:3474`

**使用说明**

把指定对象的数据更新到记录中。如果对象的属性未在记录中找到对应字段，该对象属性将被忽略。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.update(
  /* record */ undefined,
  { /* 参数或数据 */ },
  true
);
```

**源码注释**

```javascript
/**
 * 把指定对象的数据更新到记录中。如果对象的属性未在记录中找到对应字段，该对象属性将被忽略。
 * @param {Ext.data.Model} record 需要更新的记录。
 * @param {Object} data 数据对象。
 * @param {Boolean} commit 更新完成后是否自动提交。默认为true。
 * @return {Ext.data.Model} 记录本身。
 */
```

## Wb.set

```javascript
Wb.set(record, data);
```

源码：`wb-debug.js:3490`

**使用说明**

把指定对象的数据设置到记录中，该方法直接更新记录字段值，不触发任何事件。如果对象的属性未在记录中找到对应字段，该对象属性将被忽略。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.set(
  /* record */ undefined,
  { /* 参数或数据 */ }
);
```

**源码注释**

```javascript
/**
 * 把指定对象的数据设置到记录中，该方法直接更新记录字段值，不触发任何事件。如果对象的属性未在记录中找到对应字段，该对象属性将被忽略。
 * @param {Ext.data.Model} record 需要更新的记录。
 * @param {Object} data 数据对象。
 * @return {Ext.data.Model} 记录本身。
 */
```

## Wb.add

```javascript
Wb.add(object, records, position, editField, commit);
```

源码：`wb-debug.js:3513`

**使用说明**

添加记录到指定表格。 add和last的区别在于表格排序影响add位置。如果当前未选择记录before等同first，after等同last。默认为last。

**用法示例**

以下示例直接取自源码注释。

```javascript
var newRecords = Wb.add(app.grid1, [{field: 'foo'}, {field: 'bar'}]);
```

**源码注释**

```javascript
/**
 * 添加记录到指定表格。
 *
 * Example:
 *
 *     var newRecords = Wb.add(app.grid1, [{field: 'foo'}, {field: 'bar'}]);
 *
 * @param {Ext.grid.Panel/Ext.view.View/Ext.data.Store} object 表格或store对象。
 * @param {Object[]/Object} records 添加包含数据的对象或对象列表。
 * @param {String} [position] 添加到表格的位置，first首条，last末尾，before当前选择记录之前，after当前选择记录之后，add最后或排序后的位置。
 * add和last的区别在于表格排序影响add位置。如果当前未选择记录before等同first，after等同last。默认为last。
 * @param {Number} [editField] 激活编辑单元格所在的列对象或索引号。如果指定该值在添加记录后自动激活该列单元格。默认不自动激活。
 * @param {Number} [commit] 添加后是否自动提交数据。默认为true。
 * @return {Ext.data.Model[]} 添加的新记录。
 */
```

## Wb.addEdit

```javascript
Wb.addEdit(object, records);
```

源码：`wb-debug.js:3571`

**使用说明**

在表格末尾添加新的记录，并对新记录首列开启编辑状态。详细说明见Wb.add。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.addEdit(
  app.object,
  []
);
```

**源码注释**

```javascript
/**
 * 在表格末尾添加新的记录，并对新记录首列开启编辑状态。详细说明见Wb.add。
 */
```

## Wb.refreshRowNum

```javascript
Wb.refreshRowNum(object);
```

源码：`wb-debug.js:3578`

**使用说明**

刷新grid的行号，使用此方法比view.refresh方法更高效。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.refreshRowNum(app.object);
```

**源码注释**

```javascript
/**
 * 刷新grid的行号，使用此方法比view.refresh方法更高效。
 * @param {Ext.grid.Panel/Ext.data.Store} object 表格或store对象。
 */
```

## Wb.insert

```javascript
Wb.insert(object, configs);
```

源码：`wb-debug.js:3596`

**使用说明**

通过弹出对话框的方式向表格中添加记录。详细说明见Wb.edit。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.insert(
  app.object,
  { /* 配置项 */ }
);
```

**源码注释**

```javascript
/**
 * 通过弹出对话框的方式向表格中添加记录。详细说明见Wb.edit。
 */
```

## Wb.edit

```javascript
Wb.edit(object, configs, isNew);
```

源码：`wb-debug.js:3634`

**使用说明**

通过弹出对话框的方式向表格中添加/修改记录。首先系统将打开对话框，然后调用Ajax请求向后台发起添加/修改数据请求， 最后在请求返回后把数据同步到表格中。当后台返回的数据为JSON Object格式的数据时，系统自动应用这些数据，并同步到记录中， 如果后台返回的数据不是JSON Object，则不应用这些数据。 优先级从低到高依次为记录字段值、窗口控件值和配置参数。 必须在窗口内添加itemId为form的formPanel控件。在使用Wb.edit方法后将设置该窗口的editHandler属性为默认处理方法， 并设置窗口isNew属性，用以标识是否为添加或修改操作。如果窗口为实例默认使用单例模式，closeAction为hide， 并在表格销毁时自动销毁该窗口；如果窗口为非实例，将每次自动创建新的窗口实例，并在关闭后销毁窗口。 事件请参考failure。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.edit(
  app.object,
  { /* 配置项 */ },
  true
);
```

**源码注释**

```javascript
/**
 * 通过弹出对话框的方式向表格中添加/修改记录。首先系统将打开对话框，然后调用Ajax请求向后台发起添加/修改数据请求，
 * 最后在请求返回后把数据同步到表格中。当后台返回的数据为JSON Object格式的数据时，系统自动应用这些数据，并同步到记录中，
 * 如果后台返回的数据不是JSON Object，则不应用这些数据。
 * @param {Ext.grid.Panel/Ext.data.Store} object 需要编辑的表格或store对象。
 * @param {Object} configs 配置参数。
 * @param {String} configs.url 指向后台添加/修改模块的url地址。当窗口点击确定时系统会自动提交所有参数到该url。
 * @param {Object} [configs.params] 参数对象。该参数在应用窗口控件值和提交参数到后台时将覆盖同名的窗口控件值和记录字段值。
 * 优先级从低到高依次为记录字段值、窗口控件值和配置参数。
 * @param {String} [configs.title] 对话框标题。
 * @param {String} [configs.titleField] 修改的记录该字段值作为窗口子标题。仅用于修改模式。
 * @param {String} [configs.iconCls] 对话框图标。
 * @param {Object/Ext.window.Window} [configs.win] 窗口模板对象或实例。如果窗口中包含文件上传控件，
 * 必须在窗口内添加itemId为form的formPanel控件。在使用Wb.edit方法后将设置该窗口的editHandler属性为默认处理方法，
 * 并设置窗口isNew属性，用以标识是否为添加或修改操作。如果窗口为实例默认使用单例模式，closeAction为hide，
 * 并在表格销毁时自动销毁该窗口；如果窗口为非实例，将每次自动创建新的窗口实例，并在关闭后销毁窗口。
 * @param {Object[]} [configs.firstItems] 额外添加的前置控件列表。
 * @param {Object[]} [configs.lastItems] 额外添加的后置控件列表，
 * @param {Object[]} [configs.autoFocus] 如果后台异常，是否根据返回错误信息自动设置控件焦点。默认为true。
 * @param {Function} [configs.beforerequest] 在点击确定按钮发起后台请求前触发的事件。this指向窗口的appScope。如果返回false将取消请求。
 * @param {Object} [configs.beforerequest.values] 窗口所有值组成的对象。
 * @param {Ext.window.Window} [configs.beforerequest.win] 窗口对象。
 * @param {Function} [configs.success] 在请求成功完成之后触发的事件。this指向窗口的appScope。如果返回false将取消默认处理方法。请求失败
 * 事件请参考failure。
 * @param {Object} [configs.success.values] 窗口所有值组成的对象。
 * @param {Ext.window.Window} [configs.success.win] 窗口对象。
 * @param {String} [configs.success.responseText] 后台返回的字符串。
 * @param {Function} [configs.failure] 请求失败后触发的事件。this指向窗口的appScope。
 * @param {Object} [configs.failure.values] 窗口所有值组成的对象。
 * @param {Ext.window.Window} [configs.failure.win] 窗口对象。
 * @param {String} [configs.failure.responseText] 后台返回的字符串。
 * @param {Mixed...} configs.others 更多参数请参考Wb.prompt方法和Ext.window.Window对象。
 * @param {Boolean} [isNew] 是否为添加操作，默认为false即修改操作。
 * @return {Ext.window.Window} 编辑的对话框对象。如果为通过url加载窗口返回undefined。
 */
```

## Wb.del

```javascript
Wb.del(object, configs);
```

源码：`wb-debug.js:3820`

**使用说明**

删除表格中选择的记录。首先提示确定是否删除，然后向后台发请删除数据请求，最后在请求返回后删除表格中的数据。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.del(
  app.object,
  { /* 配置项 */ }
);
```

**源码注释**

```javascript
/**
 * 删除表格中选择的记录。首先提示确定是否删除，然后向后台发请删除数据请求，最后在请求返回后删除表格中的数据。
 * @param {Ext.grid.Panel/Ext.data.Store} object 表格或store对象。
 * @param {Object} [configs] 配置参数。
 * @param {String} [configs.url] 后台url地址。
 * @param {Object} [configs.params] 参数对象。
 * @param {Function} [configs.failure] 调用失败后触发的事件。
 * @param {Function} [configs.success] 调用成功后触发的事件。传递参数grid。
 * @param {String} [configs.titleField] 用户提示信息的标题字段名称。
 */
```

## Wb.getData

```javascript
Wb.getData(records, mergeFields);
```

源码：`wb-debug.js:3843`

**使用说明**

获取表格记录中的数据对象。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.getData(
  [],
  /* mergeFields */ undefined
);
```

**源码注释**

```javascript
/**
 * 获取表格记录中的数据对象。
 * @param {Ext.data.Model/Ext.data.Model[]/GridPanel/Store} records 记录或数组。如果值为grid或store，将获取表格中所有记录数据。
 * @param {Boolean} mergeFields 是否合并记录原始值和修改值，原始记录的字段加#前缀。默认为false。
 * @return {Object/Array} 记录/记录数据组成的列表。
 */
```

## Wb.getTree

```javascript
Wb.getTree(tree, properties, node, data);
```

源码：`wb-debug.js:3881`

**使用说明**

获得树指定节点下所有子节点的数据组成的对象。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.getTree(
  app.tree,
  { /* 参数或数据 */ },
  /* node */ undefined,
  { /* 参数或数据 */ }
);
```

**源码注释**

```javascript
/**
 * 获得树指定节点下所有子节点的数据组成的对象。
 * @param {Ext.tree.Panel} tree 需要获取数据的树对象。
 * @param {Array/String} [properties] 需要获取节点的哪些属性，属性以逗号分隔或为数组。默认为获取全部属性。
 * @param {NodeInterface} [node] 指定获取数据的节点，默认为根节点。
 * @param {NodeInterface} [data] 存放返回数据的对象，默认为空对象。
 * @return {Object} 节点数据组成的对象。
 */
```

## Wb.getModified

```javascript
Wb.getModified(object);
```

源码：`wb-debug.js:3903`

**使用说明**

获取表格或store中新增、删除和修改的记录，记录中被修改过的字段名称前加#。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.getModified(app.object);
```

**源码注释**

```javascript
/**
 * 获取表格或store中新增、删除和修改的记录，记录中被修改过的字段名称前加#。
 * @param {Ext.grid.Panel/Ext.data.Store} object 表格或store对象。
 * @return {Object} 被修改记录数据组成的对象：{destroy:destroyRecords, update:updateRecords, create: createRecords}。
 */
```

## Wb.sync

```javascript
Wb.sync(configs);
```

源码：`wb-debug.js:3919`

**使用说明**

把表格或store数据同步到后台。同步操作在一个请求内完成。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.sync({ /* 配置项 */ });
```

**源码注释**

```javascript
/**
 * 把表格或store数据同步到后台。同步操作在一个请求内完成。
 * @param {Object} configs 配置参数。
 * @param {Ext.grid.Panel} configs.grid 需要同步的表格，grid或store任选一个参数。
 * @param {Ext.data.Store} configs.store 需要同步的Store，grid或store任选一个参数。
 * @param {Object...} configs.configItems Wb.request请求时所有参数都可在该方法内使用。
 */
```

## Wb.doSync

```javascript
Wb.doSync(object, records, isNew, commit);
```

源码：`wb-debug.js:3943`

**使用说明**

同步表格中新建或修改的记录。该方法首选把返回的数据更新到表格，然后再提交表格新建或修改的数据。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.doSync(
  app.object,
  [],
  true,
  true
);
```

**源码注释**

```javascript
/**
 * 同步表格中新建或修改的记录。该方法首选把返回的数据更新到表格，然后再提交表格新建或修改的数据。
 * @param {Ext.grid.Panel/Ext.data.Store} object 需要同步的表格或store。
 * @param {Object[]} [records] 更新的记录列表，该数据将更新到表格的新建或修改记录。
 * @param {Boolean} [isNew] 同步的数据是否为新建的数据，true新建的数据，false修改的数据。默认为true。
 * @param {Boolean} [commit] 更新完成后是否自动提交。默认为true。
 */
```

## Wb.syncCreate

```javascript
Wb.syncCreate(object, records, commit);
```

源码：`wb-debug.js:3961`

**使用说明**

同步新建记录。该方法首选把返回的数据更新到表格，然后再提交表格新建的数据。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.syncCreate(
  app.object,
  [],
  true
);
```

**源码注释**

```javascript
/**
 * 同步新建记录。该方法首选把返回的数据更新到表格，然后再提交表格新建的数据。
 * @param {Ext.grid.Panel/Ext.data.Store} object 需要同步的表格或store。
 * @param {Object[]} [records] 更新的记录列表，该数据将更新到表格的新建记录。
 * @param {Boolean} [commit] 更新完成后是否自动提交。默认为true。
 */
```

## Wb.syncUpdate

```javascript
Wb.syncUpdate(object, records, commit);
```

源码：`wb-debug.js:3970`

**使用说明**

同步修改的记录。该方法首选把返回的数据更新到表格，然后再提交表格修改的数据。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.syncUpdate(
  app.object,
  [],
  true
);
```

**源码注释**

```javascript
/**
 * 同步修改的记录。该方法首选把返回的数据更新到表格，然后再提交表格修改的数据。
 * @param {Ext.grid.Panel/Ext.data.Store} object 需要同步的表格或store。
 * @param {Object[]} [records] 更新的记录列表，该数据将更新到表格的修改记录。
 * @param {Boolean} [commit] 更新完成后是否自动提交。默认为true。
 */
```

## Wb.reject

```javascript
Wb.reject(object);
```

源码：`wb-debug.js:3977`

**使用说明**

撤消对表格所有未决数据的更改。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.reject(app.object);
```

**源码注释**

```javascript
/**
 * 撤消对表格所有未决数据的更改。
 * @param {Ext.grid.Panel/Ext.data.Store} object 表格或store对象。
 */
```

## Wb.hasRowNumber

```javascript
Wb.hasRowNumber(object);
```

源码：`wb-debug.js:3990`

**使用说明**

判断表格是否含行号列。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.hasRowNumber(app.object);
```

**源码注释**

```javascript
/**
 * 判断表格是否含行号列。
 * @param {Ext.grid.Panel/Ext.data.Store} object 表格或store对象。
 * @return {Boolean} true含行号，false不含行号。
 */
```

## Wb.progress

```javascript
Wb.progress(pos, message, animateTarget);
```

源码：`wb-debug.js:4010`

**使用说明**

显示和更新进度条对话框。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.progress(
  /* pos */ undefined,
  "示例值",
  /* animateTarget */ undefined
);
```

**源码注释**

```javascript
/**
 * 显示和更新进度条对话框。
 * @param {Number} pos 进度条的进度，值为0-1之间的任意数值。首次调用参数必须是0，以显示进度对话框。
 * @param {String} [message] 显示的文本提示信息，默认为Str.processing。
 * @param {String/Ext.dom.Element} [animateTarget] 对话框显示或隐藏时的动画效果目标id或元素对象。
 */
```

## Wb.upload

```javascript
Wb.upload(configs);
```

源码：`wb-debug.js:4047`

**使用说明**

上传表单中包括文件控件在内的所有控件值至后台。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.upload({ /* 配置项 */ });
```

**源码注释**

```javascript
/**
 * 上传表单中包括文件控件在内的所有控件值至后台。
 * @param {Object} configs 参数配置项。
 * @param {Ext.form.Panel} configs.form 提交的表单面板对象。
 * @param {String} configs.url 提交的url地址。
 * @param {Object} configs.params 参数对象。
 * @param {Component/Component[]} configs.out 控件列表，指定列表中的所有控件及其子控件值作为参数。
 * @param {String} configs.message 请求时显示的mask信息，默认为Str.processing。
 * @param {Boolean} configs.showMask 指定请求时是否显示mask，默认为true。
 * @param {Element/Component} configs.mask 指定请求时mask的遮盖对象，默认为整个window。
 * @param {Boolean} configs.showError 指定是否显示请求返回的错误信息，默认为true。
 * @param {Boolean} configs.showProgress 是否显示上传进度条，默认为false。
 * @param {Function} configs.callback 上传成功或失败后的回调事件。如果返回false将不触发success和failure事件，以及系统消息的显示。
 * @param {Ext.form.Panel} configs.callback.form formPanel对象。
 * @param {Object} configs.callback.action action对象。
 * @param {String} configs.callback.value 返回的文本值。
 * @param {Boolean} configs.callback.success 上传是否成功，true成功，false失败。
 * @param {Function} configs.success 上传成功后的事件，参数见callback方法。
 * @param {Function} configs.failure 上传失败后的事件，参数见callback方法。
 */
```

## Wb.uploadAg

```javascript
Wb.uploadAg(configs);
```

源码：`wb-debug.js:4073`

**使用说明**

调用热加载上传文件，获取文件 InputStream inputStream = (InputStream) request.getAttribute("fileId");

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.uploadAg({ /* 配置项 */ });
```

**源码注释**

```javascript
/**
 * 调用热加载上传文件，获取文件
 * InputStream inputStream = (InputStream) request.getAttribute("fileId");
 */
```

## Wb.promptFile

```javascript
Wb.promptFile(callback, params);
```

源码：`wb-debug.js:4112`

**使用说明**

显示服务器端的文件对话框。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.promptFile(
  function () {
  // 处理结果
},
  { /* 参数或数据 */ }
);
```

**源码注释**

```javascript
/**
 * 显示服务器端的文件对话框。
 * @param {function} callback 点击对话框确定按钮时执行的方法。
 * @param {Array} callback.files 选择的文件列表。
 * @param {Ext.window.Window} callback.win 文件对话框窗口。
 * @param {Object} params 文件参数选项。
 * @param {function} [params.show] 对话框显示后的事件，可用参数scope。
 * @param {function} [params.hide] 对话框隐藏后的事件，可用参数scope。
 * @param {Boolean} [params.multiSelect] 是否允许多选，默认为false。
 * @param {String[]} [params.file] 文件路径，文件对话框将转到该文件所在路径。
 * @param {Boolean} [params.pathOnly] 是否仅显示路径，默认为false。
 * @param {String} [params.title] 对话框标题。
 * @param {Boolean} [params.forceSelection] 是否必须选择文件。
 * @param {Boolean} [params.autoClose] 是否自动关闭窗口，默认为true。
 * @param {String} [params.extName] 文件扩展名。
 */
```

## Wb.getFrame

```javascript
Wb.getFrame();
```

源码：`wb-debug.js:4128`

**使用说明**

获取唯一的隐藏Iframe对象，用于模拟Ajax方式的文件下载。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.getFrame();
```

**源码注释**

```javascript
/**
 * 获取唯一的隐藏Iframe对象，用于模拟Ajax方式的文件下载。
 * @return {Iframe} Iframe dom对象。
 */
```

## Wb.getForm

```javascript
Wb.getForm(params, isUpload);
```

源码：`wb-debug.js:4184`

**使用说明**

获取唯一的表单对象，用于通过常规表单提交的方式提交参数。

**用法示例**

以下为最小调用模板；请将 `app.*`、示例值和地址替换为当前页面的实际对象。

```javascript
Wb.getForm(
  { /* 参数或数据 */ },
  true
);
```

**源码注释**

```javascript
/**
 * 获取唯一的表单对象，用于通过常规表单提交的方式提交参数。
 * @param {Object} [params] 参数对象。
 * @param {Boolean} [isUpload] 是否使用multipart/form-data编码，该编码方式通常用于上传文件。默认为false。
 * @return {Form} 表单dom对象。
 */
```

## Wb.submit

```javascript
Wb.submit(url, params, target, method, isUpload);
```

源码：`wb-debug.js:4226`

**使用说明**

向指定url通过常规的表单提交方式提交参数。表单提交区别于ajax提交，如果涉及文件的上传或下载必须使用表单提交的方式。

**用法示例**

以下示例直接取自源码注释。

```javascript
Wb.submit('m?xwl=file', {p1: 'foo', p2: 123, p3: new Date()});
```

**源码注释**

```javascript
/**
 * 向指定url通过常规的表单提交方式提交参数。表单提交区别于ajax提交，如果涉及文件的上传或下载必须使用表单提交的方式。
 *
 * Example:
 *
 *     Wb.submit('m?xwl=file', {p1: 'foo', p2: 123, p3: new Date()});
 *
 * @param {String} url 提交的URL地址。
 * @param {Object} [params] 参数对象。
 * @param {String} [target] 指定在何处打开url，可以为预设值或框架。默认为'_blank'。
 * @param {String} [method] 提交使用的方法。默认为'POST'。
 * @param {Boolean} [isUpload] 是否使用multipart/form-data编码，该编码方式通常用于上传文件。默认为false。
 */
```

Source: https://ag.879818327.xyz/api/grid-and-sync/index.mdx
