# 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 安裝
- 偽靜態配置
- 依賴注入 & 控制器
- 中間件
- 路由文件
- 視圖