# ajax综合使用
## ajax综合使用
### 表格验证
您可以`data-request-validate`在表单上指定属性以启用验证功能。
```
<form
data-request="onSubmit"
data-request-validate>
<!-- ... -->
</form>
```
### 引发验证错误
- 后台使用`ValidationException`抛出异常
- 其中第一个参数是数组。数组应使用字段名称作为键,并使用错误消息作为值。
```
function onSubmit()
{
throw new ValidationException(['name' => 'You must give a name!']);
}
```
> **注意**:您还可以将[验证服务](https://octobercms.com/docs/services/validation)的实例作为异常的第一个参数传递。
### 显示错误信息
在表单内部,您可以使用`data-validate-error`容器元素上的属性来显示第一条错误消息。容器内的内容将设置为错误消息,并使该元素可见。
```
<div data-validate-error></div>
```
要显示多个错误消息,请包含一个带有`data-message`属性的元素。在此示例中,段落标签将被复制并为存在的每条消息设置内容。
```
<div class="alert alert-danger" data-validate-error>
<p data-message></p>
</div>
```
要添加有关AJAX失效的自定义类,请插入`ajaxInvalidField`和`ajaxPromise`JS事件。
```
$(window).on('ajaxInvalidField', function(event, fieldElement, fieldName, errorMsg, isFirst) {
$(fieldElement).closest('.form-group').addClass('has-error');
});
$(document).on('ajaxPromise', '[data-request]', function() {
$(this).closest('form').find('.form-group.has-error').removeClass('has-error');
});
```
### 显示字段错误
另外,您可以通过定义使用`data-validate-for`属性的元素(将字段名称作为值传递)来显示各个字段的验证消息。
```
<!-- Input field -->
<input name="phone" />
<!-- Validation message for the field -->
<div data-validate-for="phone"></div>
```
如果该元素保留为空,则将使用服务器中的验证文本填充该元素。否则,您可以指定任何您喜欢的文本,它将显示出来。
```
<div data-validate-for="phone">
Oops.. phone number is invalid!
</div>
```
### 加载按钮
当任何元素包含该`data-attach-loading`属性时,`oc-loading`将在AJAX请求期间向其添加CSS类。此类将使用CSS选择*器*在按钮和锚点元素上生成\*加载微调`*:after`器。
```
<form data-request="onSubmit">
<button data-attach-loading>
Submit
</button>
</form>
<a
href="#"
data-request="onDoSomething"
data-attach-loading>
Do something
</a>
```
### 即时消息
`data-request-flash`在表单上指定属性,以在成功的AJAX请求中启用Flash消息。
```
<form
data-request="onSuccess"
data-request-flash>
<!-- ... -->
</form>
```
结合`Flash`在事件处理程序中使用Facade,在请求完成后将出现一条Flash消息。
```
function onSuccess()
{
Flash::success('You did it!');
}
```
为了与基于AJAX的Flash消息保持一致,可以通过在页面或布局中放置此代码来在页面加载时呈现[标准Flash消息](https://octobercms.com/docs/markup/tag-flash)。
```
{% flash %}
<p
data-control="flash-message"
class="flash-message fade {{ type }}"
data-interval="5">
{{ message }}
</p>
{% endflash %}
```
### 使用范例
以下是表单验证的完整示例。它调用`onDoSomething`事件处理程序,该事件处理程序将触发加载提交按钮,在表单字段上执行验证,然后显示成功的Flash消息。
```
<form
data-request="onDoSomething"
data-request-validate
data-request-flash>
<div>
<input name="name" />
<span data-validate-for="name"></span>
</div>
<div>
<input name="email" />
<span data-validate-for="email"></span>
</div>
<button data-attach-loading>
Submit
</button>
<div class="alert alert-danger" data-validate-error>
<p data-message></p>
</div>
</form>
```
AJAX事件处理程序查看客户端发送的POST数据,并将一些规则应用于验证器。如果验证失败,`ValidationException`则抛出a,否则`Flash::success`返回一条消息。
```
function onDoSomething()
{
$data = post();
$rules = [
'name' => 'required',
'email' => 'required|email',
];
$validation = Validator::make($data, $rules);
if ($validation->fails()) {
throw new ValidationException($validation);
}
Flash::success('Jobs done!');
}
```
- 基本说明
- 基本操作
- October cms 安装
- 后台控制器路径
- 图标
- 获取安装网上的插件/主题
- 插件构造器使用
- 定时任务
- October后台控制器
- vscode编辑器
- ajax操作
- 使用
- ajax更新组件
- ajax属性API
- JavaScript API
- ajax综合使用
- 主题
- 多语言主题
- 安装市场主题
- 主题程序处理
- 主题
- 页面
- 部件
- 布局
- 内容
- 组件
- 媒体
- 主题表单操作
- 表单使用
- 表单后端程序处理
- 插件
- 自定义插件
- 插件说明
- 插件导航条
- 插件数据库设置
- 插件的设置管理
- 插件的配置文件config
- 组件
- app服务
- app容器
- 扩展行为
- 缓存
- Collection类
- Lazy Collections
- Collection方法
- 助手函数
- 数组助手函数
- 路径助手函数
- 玄乐助手函数
- 其他助手函数
- 错误与记录
- 事件处理
- HTML页面
- 文件与目录操作
- 散列和加密
- 邮件
- 邮件内容
- 邮件发送
- 分页
- 模板解析器
- 动态解析器语法
- 队列消息
- 请求与输入
- 响应
- 视图
- 路由器
- 配置
- 验证操作
- 处理错误消息
- 错误消息与视图
- 可用的验证规则
- 有条件的验证规则
- 验证数组
- 错误消息
- 自定义验证规则
- 模型操作
- 定义模型与其属性
- 检索模型
- 插入与更新
- 删除模型
- 查询范围
- 事件操作
- 关联操作
- 定义关系
- 关系类型
- 多肽关系
- 关系查询
- 渴望加载
- 插入模型
- 数据库操作
- 基本用法
- 数据表结构
- 查询连贯操作
- 结果检索
- select子句
- 插入更新
- where子句
- 排序,分组,限制和偏移
- 文件附件
- Collection操作
- 属性操作
- 系列化json
- 数据库属性
- 数据库行为
- 控制器
- 后台控制器定义
- 后台页面
- 后台组件
- 后台表单
- 表单组件
- 表单视图
- 表单行为
- 后台列表
- 列表行为
- 列表过滤器
- 可用列类型
- 关系行为
- 关系行为类型
- 扩展关系行为
- 列表排序操作
- 导入导出操作
- 用于与权限
- corlate模板修改
- 修改顶部导航
- laravel问题
- 控制器不存在
- 控制器
- 路由组
- laravel笔记
- laravel 安装
- 伪静态配置
- 依赖注入 & 控制器
- 中间件
- 路由文件
- 视图