傳統上,網路表單的設定是同步提交。 在同步提交中,當用戶提交表單時,他們會被重定向到確認頁、感謝頁,或者如果提交失敗,則會被重定向到錯誤頁。 不過,單頁應用程式等現代化網頁體驗正日益普及,當用戶端與伺服器互動於背景時,網頁會維持靜態。 您現在可以設定非同步提交,透過最適化表單提供此體驗。
在非同步提交中,當使用者提交表單時,表單開發人員會插入不同的體驗,例如重新導向至網站的其他表單或個別區段。 作者也可以外掛個別服務,例如傳送資料至不同的資料存放區或新增自訂分析引擎。如果非同步提交,適用性表單會像單頁應用程式一樣運作,因為表單沒有重新載入,或提交的表單資料在伺服器上驗證時,其URL不會變更。
如需適用性表單中非同步提交的詳細資訊,請參閱。
設定最適化表單的非同步提交:
在最適化表單製作模式中,選取「表單容器」物件並點選 來開啟其屬性。
在 提交 屬性部分,啟用 使用非同步提交.
在 提交時 部分,選擇以下選項之一,以在成功提交表單時執行。
點選 以儲存屬性。
AEM Forms為表單提交提供現成可用的成功和錯誤處理常式。 處理常式是根據伺服器回應執行的用戶端函式。 提交表單時,將資料發送到伺服器進行驗證,伺服器會向客戶端返回一個響應,其中包含有關提交成功或錯誤事件的資訊。 資訊會以參數形式傳遞至相關處理常式,以執行函式。
此外,表單作者和開發人員可以在表單層級撰寫規則,以覆寫預設處理常式。 如需詳細資訊,請參閱 使用規則覆蓋預設處理程式.
讓我們先檢閱伺服器對成功和錯誤事件的回應。
提交成功事件的伺服器回應結構如下:
{
contentType : "<xmlschema or jsonschema>",
data : "<dataXML or dataJson>" ,
thankYouOption : <page/message>,
thankYouContent : "<thank you page url/thank you message>"
}
成功提交表單時的伺服器回應包括:
成功處理常式會讀取伺服器回應,並因此重新導向至設定的頁面URL或顯示訊息。
提交錯誤事件的伺服器回應結構如下:
{
errorCausedBy : "<CAPTCHA_VALIDATION or SERVER_SIDE_VALIDATION>",
errors : [
{ "somExpression" : "<SOM Expression>",
"errorMessage" : "<Error Message>"
},
...
]
}
提交表單時發生錯誤時的伺服器回應包括:
錯誤處理程式讀取伺服器回應,並因此在表單上顯示錯誤訊息。
表單開發人員和作者可以在表單層級的程式碼編輯器中撰寫規則,以覆寫預設處理常式。 成功和錯誤事件的伺服器回應會在表單層級公開,開發人員可使用 $event.data
在規則中。
執行下列步驟以在程式碼編輯器中撰寫規則,以處理成功和錯誤事件。