CHAPTER 23 · PRACTICE WORKSPACE

表單驗證、POST 與資料寫入

完成可驗證、提交並顯示結果的聯絡表單

02 Checkpoint 1 1/3
  1. 01Starter讀懂作品骨架
  2. 02Checkpoint 1加入第一項能力
  3. 03Checkpoint 2累積第二項能力
  4. 04Solution核對完整結果

TASK STATUS

三項任務目前狀態

TASK-01已完成

驗證姓名與 Email

修改檔案:script.js

完成後看見:畫面顯示姓名、Email 驗證結果,通過時仍明確標示尚未建立 payload

TASK-02本階段處理

建立尚未送出的 payload 預覽

修改檔案:script.js

完成後看見:預覽區顯示 name、email、message,狀態為「payload 已建立;尚未送出」

TASK-03稍後處理

送出並管理 loading/success/error

修改檔案:script.js

完成後看見:成功與失敗都可重現,送出期間按鈕停用且完成後恢復

WORKSPACE

本階段實作區

已完成 TASK-01;先核對可見結果,再前往 TASK-02。

FOCUS TASK · TASK-02

現在只處理:建立尚未送出的 payload 預覽

修改:script.js

完成後:預覽區顯示 name、email、message,狀態為「payload 已建立;尚未送出」

講解時展開:2 個小型比較

payload 預覽 vs submit|建立不代表送出

比較:畫面顯示 payload 只能證明資料已整理,尚未送出時不能顯示成功。

現在做:在 Checkpoint 2 填入姓名「小安」、Email xiaoan@example.com、訊息「我要詢問合作」後送出;核對 payload-preview 的三個 key、值與狀態,不勾選模擬失敗。

看預期與證據

預期:preview 只包含 name、email、message 三個欄位,值與表單一致;status 是「payload 已建立;尚未送出」,沒有 loading 或成功編號。

證據:保存 JSON 預覽與 status 截圖,逐項圈出三個允許欄位,證明建立 payload 不等於已送出。

資料物件 vs 預覽文字|展示來源要一致

比較:預覽內容應從 createPayload 的結果產生,不要在畫面另寫一份可能不同步的文字。

現在做:保留姓名與 Email 不變,只把訊息改成「第二段訊息」後再次送出;比較兩次 preview,並檢查 JSON 是否仍只有三個既定欄位。

看預期與證據

預期:preview 的 message 會跟著表單更新,name/email 保持原值,沒有把 checkbox 或其他 DOM 狀態混進 payload。

證據:留下兩次 JSON 預覽與欄位清單,證明畫面預覽來自同一個 createPayload(),而不是另寫一份不同步文字。

需要排錯時查看:任務循環(觀察 → 預測 → 實作 → 故障 → 驗收)
  1. A|觀察:在 Checkpoint 1 送出有效姓名與 Email,確認狀態只到「驗證通過;尚未建立 payload」,預覽區仍未建立 payload。
  2. B|預測:於 Checkpoint 2 填入有效資料後按下送出,查看預覽區的 JSON 與狀態區,不勾選或觸發任何真實網路送出。
  3. C|實作:在 script.js 的 createPayload() 完成「建立尚未送出的 payload 預覽」,一次只處理本任務責任。
  4. D|故障:若結果不一致,先依原操作重現,再檢查 createPayload() 與 script.js,最後重跑原操作。
  5. E|驗收:預覽區顯示 name、email、message,狀態為「payload 已建立;尚未送出」,不出現 loading 或成功編號

完成條件:DONE-02:預覽區顯示 name、email、message,狀態為「payload 已建立;尚未送出」

MOCK POST

聯絡我

尚未建立 payload

CONTINUE

繼續完成 TASK-02

前往 Checkpoint 2,依要求完成「建立尚未送出的 payload 預覽」。

前往 Checkpoint 2:完成 TASK-02

CHAPTER HANDOFF

從列表狀態,交棒到一次可追蹤的送出

接收第 22 章:沿用已完成的產品列表與分頁邊界證據;本章不重做列表,改處理使用者輸入、驗證與提交生命週期。

交給第 24 章:完成後帶著驗證通過的 payload、loading/success/error 與 finally 恢復證據,下一章直接比較一次 POST 與持續訂閱,不重做表單驗證。

前往第 24 章:即時資料模型與 Firebase 介面